MurphyA/hacker-news huggingface dataset:
by solenoid0937 | 2026-01-04 12:50:42+00:00
Reading the beginning and end is like eating just the buns off a burger and declaring it bland and tasteless.

Part of the magic of this story is that it can change what you agree with (as it did for me.) Not saying it will do the same for you, but it is a compelling vision; I can't think of other ways to get there without getting unscientific.
by websiteapi | 2026-01-04 12:51:24+00:00
Eventually the concept of refunds will become very rare. In fact, it, along with free shipping were pretty rare before Amazon and Walmart.

If you travel and go to some random beach town and buy random item from random street merchant, they won’t give you a refund. Main issue to bridge is ensuring the item is expected as you can’t physically inspect prior to purchase.

It’ll be interesting to see how that’s solved. I participate in kickstarter which defacto doesn’t really offer refunds, so maybe it’ll be the same.
by tetha | 2026-01-04 12:51:47+00:00
> That's explaining "what" but also implicitly "why" - because that's how double-entry works and that's the tolerance banks allow for settlement delays. You can't really extract that into a method name without it becoming absurd.

That's why I've also started to explicitly decompose constants if possible. Something like `ageAlertThresholdHours = backupIntervalHours + approxBackupDurationHours + wiggleRoomHours`. Sure, this takes 4 constants and is longer to type than "28 hours".

However, it communicates how I think about this, how these 28 hours come about and how to tweak them if the alerting is being annoying: It's easy to guess that you'd bump that to 29 hours if it throws false positives. But like this, you could see that the backup is supposed to take, say, 3 hours - except now it takes 4 due to growth of the system. So like this, you can now apply an "obviously correct" fix of bumping up the approximate backup duration based on monitoring data.
by mschuster91 | 2026-01-04 12:52:14+00:00
A ton of these things is handwritten assembly. "All" you need to do is run it through a disassembler and you got the source... the key problem more is that virtually all cracks and keygens come heavily packed.

Either to protect the authors of the original software to check if the warez group got the full algorithm or if they have something mildly different from the original that allows the authors to detect a keygen in newer versions, or because the warez group wants to make life more difficult for copycats... or, and I've seen my fair share of that (and earned good money to clean up), a third party wrapped a highly popular keygen like for Adobe CS6 in some sort of malware and wanted to avoid detection.
by Kinrany | 2026-01-04 12:52:52+00:00
> If you want to make pointers not have a nil state by default, this requires one of two possibilities: requiring the programmer to test every pointer on use, or assume pointers cannot be nil. The former is really annoying, and the latter requires something which I did not want to do (which you will most likely not agree with just because it doesn’t seem like a bad thing from the start): explicit initialization of every value everywhere.

That doesn't sound right: the third option is making the compiler check that only initialized memory is read.
by bazzargh | 2026-01-04 12:53:31+00:00
It looks like you have typos?
(x^2+y^2)+(sin(atan(x/y))*cos(atan(x/y)))
reduces to
x^2+y^2+( (x/y) / (x^2/y^2 + 1) ) - not the equation given? Tho it's easier to see that this would be symmetrical if you rearrange it to:
x^2+y^2+( (xy) / (x^2+y^2) )

Also, if f(x,y) = x^2+y^2+( (x/y) / (x^2+y^2) )
then f(2,1) is 5.2 and f(1,2) is 5.1? - this is how I noticed the mistake. (the other reduction gives the same answer, 5.4, for both, by symmetry, as you suggest)

There's a simpler solution which produces integer ids (though they are large): 2^x & 2^y. Another solution is to multiply the xth and yth primes.

I only looked because I was curious how you proved it unique!
by sph | 2026-01-04 12:54:59+00:00
Tagged enums != any type (i.e. runtime casting)

Tagged enums are everywhere. I am writing a micro kernel in C and how I wish I had tagged enums instead of writing the same boilerplate of

enum foo_type {
FOO_POINTER,
FOO_INT,
FOO_FLOAT,
};

struct foo {
enum foo_type type;
union {
void *val_pointer;
int val_int;
float val_float;
};
};
by amenhotep | 2026-01-04 12:55:21+00:00
A newly convicted criminal arrived in prison, and on the first night he was puzzled to hear his fellow inmates yelling numbers to each other. "36!" one would yell, and the rest would chuckle. "19!" went another, to uproarious laughter. "50," remarked a third wryly, which provoked groans and ironic cheers. Eventually his cellmate sat up and cried out "114" and it brought the house down.

In a lull, he asked his cellmate what on earth was going on? The cellmate explained that most of them had been in prison so long that they already knew all the jokes, so to save time they just referred to them by number. "Oh," says the man, "that makes sense. Can I try?"

His cellmate encouraged him to go ahead, so he stood up and went to the bars and shouted as loud as he could "95!"

Absolutely no reaction. His cellmate looked at him and shook his head. "You didn't tell it right."
by broken-kebab | 2026-01-04 12:55:53+00:00
IMO the example shows exactly that splitting code in smaller pieces is way better than just commenting it.

It makes it easier for dev's brain to parse the code e.g. to understand what code really does, while fattier but commented version makes it harder but tries to replace it with information about original coder's intentions. Which is maybe important too but not as important as code itself.

Not to forget that it's too easy to change code and leave comments obsolete.
by jacquesm | 2026-01-04 12:56:07+00:00
> However, of course both states were the result of a split of "Germany".

> This is the same with the ROC and PRC

It really isn't.

Note that West Germany did not have to invade East Germany to re-unify and that East Germany was on a per-capita basis much poorer than West Germany.

Unlike Taiwan, which is doing more than twice as good. So this would be more in line with Russia invading Ukraine. And that's precisely the rhetoric they are using: 'unification'.
by supriyo-biswas | 2026-01-04 12:56:30+00:00
The way I see it, generative AI has been introducing a lot of distrust into systems that worked "fine" previously, such as rendering homework ineffective in the case of education, making verification difficult for remote interviewing, flooding the internet with low-quality noise (aka slop) that makes it difficult for reputable and researched sources of information to stand out, with all the implications it has for society, the fraudulent returns described here, and the like.

Ultimately, it would be a bit ironic if generative AI ends up kneecaping itself, either through regulation (because businesses will be unlikely to tolerate hiring fraud, returns fraud etc. beyond a threshold), or caused things to move into meatspace through on-site interviews, reliance on physical stores, elimination of online courses and others, which is less amenable to its application.
by justvugg | 2026-01-04 12:56:41+00:00
Hi HN,

I’ve been working on Polymcp, an open-source toolkit for building MCP agents that can discover, inspect, and orchestrate tools across multiple MCP servers (HTTP, stdio, or in-process).

A few things that might be interesting to this crowd:
• Tool Inspector: a built-in inspector that lets you see exactly which tools are exposed by each MCP server, their schemas, inputs/outputs, and how the agent is reasoning about using them. It’s meant to make MCP setups debuggable instead of opaque.
• Unified agent: one agent can talk to multiple MCP servers at once (local Python tools, remote HTTP servers, stdio MCPs like Playwright, etc.).
• Code-mode execution: instead of iterative “LLM → tool → LLM → tool” loops, the agent can generate a single Python script that executes the full tool plan. This is faster, cheaper in tokens, and easier to audit.
• Minimal boilerplate for servers: you can expose plain Python functions as MCP tools with almost no glue code.
• CLI + registry: manage MCP servers, configs, and agents from the CLI; servers can be added/removed without touching agent code.

The goal is to make MCP setups feel more like a composable systems tool than a black-box agent framework.

Repo: https://github.com/poly-mcp/Polymcp
PyPI: https://pypi.org/project/polymcp/

I’d love feedback, especially from people already experimenting with MCP, inspectors, or multi-tool agents.
by jll29 | 2026-01-04 12:56:46+00:00
Both Pascal and C (and their offspring) are wonderful gifts for us to receive from their designers, and I enjoy writing code in both.

> It's funny seeing the problems with C Niklaus Wirth pointed out originally still trying to be solved. He solved them with pascal and its OO successors, though for some reason it's not cool still.

Here's Brian Kernighan's view on the shortcomings of Pascal resulting from a practical book project idea:

https://www.lysator.liu.se/c/bwk-on-pascal.html

Not sure to what extent the latest Oberon or Ada have addressed all of these, since I've not kept up with Ada news.
by elbci | 2026-01-04 12:56:46+00:00
p2p storage as in torrent or IPFS or whatever is the part that we kinda' solved already. Serving/searching/addressing without the (centralized) DNS is still missing for a (urgently needed) p2p censorship resistant internet. Unfortunately this guy just uses some buzzwords to offer nothing new - why would I share links to that site instead of sharing torrent magnet links?
by mschuster91 | 2026-01-04 12:56:55+00:00
Money take:

> If the user can’t get a functional project by the end of a tutorial, the tutorial failed. So that should be priority number one. I did an entire Akademy talk talking about how docs is part of the product, and broken docs effectively means a broken product.

So, SO many projects fail at this!

The NodeJS scene is particularly bad (made worse by the constant churn), but I was playing around with OpenStack right during their Python 2=>3 migration, or many moons ago I was involved in running a DC/OS cluster, and ffs many Docker images and helm charts suffer from the same issue. There's a reason many people went for Bitnami images and charts over the "official" images/charts... at least the Bitnami documentation actually made sense and worked.
by zimmerfrei | 2026-01-04 12:57:54+00:00
As mentioned a few days ago, this post mainly covers a gpg problem not a PGP problem.

I recommend people to spend some time and try out sequoia (sq) [0][1], which is a sane, clean room re-implementation of OpenPGP in Rust. For crypto, it uses the backend you prefer (including openssl, no more ligcrypt!) and it isn't just a CLI application but also as a library you can invoke from many other languages.

It does signing and/or encryption, for modern crypto including AEAD, Argon2, PQC.

Sure, it still implements OpenPGP/RFC 9580 (which is not the ideal format most people would define from scratch today) but it throws away the dirty water (SHA1, old cruft) while keeping the baby (interoperability, the fine bits).

[0] https://sequoia-pgp.org/

[1] https://archive.fosdem.org/2025/events/attachments/fosdem-20...
by calf | 2026-01-04 12:57:55+00:00
No serious person actually argued the category error of respecting the sovereignty of a dictator but rather respecting the autonomy of a a nation and a people. And the empirical historic reasons are WHY this principle/heuristic ought to be followed, even if those did not articulate that.

It's a litmus test for conservative value systems since anyone who paid attention in high school social studies and history should have at least passing familiarity with the arguments.
by gcanyon | 2026-01-04 12:57:56+00:00
It's a YOLO presidency, so sure, why not? Time and time again we've cycled:

1. That's outrageous
2. He's joking
3. But what if he's not joking?
4. We're doing it

Sometimes it stops at 2, but Trump is definitely like that awkward teenage boy who says to the girl he secretly likes, "What if we just, like, made out? That would be crazy, right?"
by spragl | 2026-01-04 12:58:07+00:00
Its different for different children. Some of them understand more than you think, most of them dont.

I think that reading the classics can be beneficial to the first type. But some of the classics can be very bleak. Its not fair to the children to make them read those. 1984 is probably in this category. Read Animal Farm instead. It is also better for the second type of children.

If done properly, and in moderation, I think reading classics is beneficial.
by andrepd | 2026-01-04 12:58:25+00:00
There are more objective reasons to be pessimist about technology than optimist. There's mass surveillance, centralisation of power to an historically unprecedented degree, and algorithmic social media is destroying our community, culture, and politics. The industry that's receiving an Apollo project's worth of money every few months appears on track to produce not a machine to cure cancer, but to produce fake slop as indistinguishable from human speech or real images as possible. At present there's no reason this insane build-up will leave us anything more than than.

The fact you talk about cryonics instantly reveals your worldview. I'm sorry to say, but I firmly believe you're mistaken.
by dijksterhuis | 2026-01-04 12:58:25+00:00
ime summaries/details of the “business what” are the most important part of “why the code exists/is written this way” — it’s the overarching problem that section of code aims to solve / needs to work around!

they can also be a good defence against newer seniors on the team refactoring willy nilly — can’t argue with business rules, but can argue over uncle bob. ;)
by JanisErdmanis | 2026-01-04 12:59:21+00:00
When I did my BSc and MSc in physics almost all my exams were oral just like you described. Latter I did a PhD in a different university where oral exams were never practiced. My PhD supervisor told me that part of it is because of the scaling issue, but another very interesting point he made is that it is about cultural interpretation of fairness.

In my BSc and MSc we were all basically locals who are in all aspects about the same except from the aptitude to study. In the university where I did my PhD there were much more divisions (aka diversity) in which every oral examiner would need to navigate so one group does not feel to be made preferential over another.
by tromp | 2026-01-04 12:59:22+00:00
The proof of Lemma 1 says that a string of length n can be output by a program of length n+O(1) in any Turing complete programming language, but that ignores
the fact that nearly all languages require certain characters in string literals to be escaped.

For this reason it is better to use languages that are custom designed for program size complexity, such as Binary Lambda Calculus [1].

[1] https://gist.github.com/tromp/86b3184f852f65bfb814e3ab0987d8...
by interloxia | 2026-01-04 12:59:23+00:00
From 38c3

https://reynardsec.com/en/volkswagens-bad-streak-we-know-whe...

"The data, which includes detailed location information and even vehicle owner details, was left exposed and unprotected on the internet for an extended period of time."

Wir wissen wo dein Auto steht
Volksdaten von Volkswagen

https://media.ccc.de/v/38c3-wir-wissen-wo-dein-auto-steht-vo...
by lelele | 2026-01-04 12:59:26+00:00
There is no such thing as "desktop Linux". What we have instead is a large collection of distros, each with its own UX, unlike Windows or macOS which present a relatively unified platform.

I switched to Linux many years ago because a new laptop was unusably slow under the Windows Vista it came with, and I have not looked back since, but I'd never recommend Linux to "the masses". Linux can work well for people who just browse the web and read email. Beyond that, the experience quickly becomes dependent on having a knowledgeable person nearby to help with choosing and installing software, selecting supported hardware or troubleshooting it.
by lazide | 2026-01-04 12:59:51+00:00
Ukraine isn’t part of the EU, or historically part of the ‘European’ sphere (really meaning Western European). It’s historically been part of Russia. Or if you go back far enough, Russia was part of Ukraine.

It doesn’t completely negate your point, and anyone who isn’t seeing the writing on the wall is being willfully ignorant aka Chamberlain.

But culturally this is also a very different situation from France, Germany, England, Spain, or even Greece being shelled.

Which is also why people are so ‘meh’ on it, practically, and it’s taking so long to respond.
by noduerme | 2026-01-04 13:00:18+00:00
The $300/hr rate is, to be honest, quite cheap when you don't charge all the time that went into meetings and preparing to write the code. It's probably more like $60/hr if you included all that. However, I don't need to account for my whereabouts the rest of the time, and I can just show a log of the code in progress if I'm ever asked about the time I bill. Of course when you actually sit down and begin to write something new, you begin actually thinking about modules and namespaces and consolidating functions and which things you can streamline, and so on... which is why it's fun. You may change your mind several times as you realize that all of this behavior should go into the parent class or something like that. But then it's just about painting something which you already have in your mind. I prefer to be paid for my painting, by the hour, rather than ever charging a project rate. I'm always concerned that my consulting is going to be mistaken for wasted time. I never want to be accused of wasting a client's time or overbilling; but they understand that when I sit down to write it, that it will be done right the first and last time, and that it could not be done any faster or better than that.
by janaagaard | 2026-01-04 13:00:41+00:00
SO peaked long, long before LLMs came along. My personal experience is that GitHub issues took over.

You can clearly see the introduction of ChatGPT in late 2022. That was the final nail in the coffin.

I am still really glad that Stack Overflow saved us from experts-exchange.com - or “the hyphen site” as it is sometimes referred to.
by hosh | 2026-01-04 13:01:11+00:00
I am familiar with NLP and persuasion techniques, and when I started feeling it creep in as I read this story, I started skimming. I have learned that a compelling vision alone does not mean it is correct or even wise.

There is so much more to the cosmos than science, though I get that this is the current preoccupation of our civilization. Maybe one day, people will expand their consciousness beyond science the way the main character expanded her’s to communicate with aliens. Until then, I recognize I am in the minority here in HN with this view.
by constantcrying | 2026-01-04 13:01:12+00:00
>VW was also bound by emission standards, yet Dieselgate still happened.

Sure, but it is not like they just got away with that (ironically other manufacturers who did essentially the same thing, did mostly get away with it).

>I would be very surprised if it didn't have some kind of "heavily-restricted debugging interface, only available to select VW engineers, which provides a limited set of fully anonymous vehicle diagnostic metrics" - which in practice is of course used to sell trivially deanonymizable data to anyone with a few bucks to spare.

The GDPR allows you to receive a copy of all data a manufacturer has about you, "trivially deanonymizable" is by any reasonable interpretation of the GDPR personal data.
Of course you can believe that VW and other manufacturers are secretly ignoring laws (again) and of course evidence for that would be hard to come by, but it it did come out it would be a massive scandal, with a massive criminal investigation.

In general, do you want to have minimal laws protecting your privacy and manufacturers blatantly not caring about existing laws and individuals having no recourse or do you want strict laws protecting your privacy with manufacturers facing heavy sanctions, when they ignore those laws? The choice seems pretty clear.
by jacquesm | 2026-01-04 13:01:28+00:00
No, at the time they were the biggest kid on the playground, their mistake was to think that the playground would be a constant. If Germany had just taken over Austria, Czechoslovakia and Poland they might have gotten away with it too. The lack of consolidation and Hitler being drunk on power caused them to continue to set higher goals.

Then once the theater of the war shifted to Global and Japan brought the USA into the war things changed rapidly.
by solenoid0937 | 2026-01-04 13:02:23+00:00
> There are more objective reasons to be pessimist about technology than optimist.

Strongly disagree, it's why I'm not dying in a ditch of famine at the ripe age of 30.

> to produce not a machine to cure cancer, but to produce fake slop as indistinguishable from human speech or real images as possible

Arguably a stepping stone to better technologies, and a prerequisite to machine intelligence
by jacquesm | 2026-01-04 13:02:44+00:00
Einstein had some interesting thoughts about this, I don't have a reference handy but it boils down to a UN with teeth, effectively a single world government. And I think that that is something I could get behind because countries are not stable enough over a long enough period of time to give us what we need.

Even so, there is a lot of potential for abuse there too and it will most likely never happen because human nature is what it is.
by gspr | 2026-01-04 13:03:36+00:00
> Wayland smells like IPv6 to me. No need to switch, and it hurts when you try.

I'm very happy with Wayland, but what a strange comparison to make if you're not. IPv6 is objectively an enormous improvement over IPv4, and the only gripe with it is that it's still not ubiquitous.
by sph | 2026-01-04 13:03:56+00:00
The worst part of designing a language is the parsing stage.

Simple enough to do it by hand, but there’s a lot of boilerplate and bureaucracy involved that is painfully time-wasting unless you know exactly what syntax you are going for.

But if you adopt a parser-generator such as Flex/Bison you’ll find yourself learning and debugging and obtuse language that has to be forcefully bent to your needs, and I hope your knowledge of parsing theory is up-to-scratch when you’re facing with shift-reduce conflicts or have to decide whether LR or LALR(1) or whatever is most appropriate to your syntax.

Not even PEG is gonna come to your rescue.
by 0xTJ | 2026-01-04 13:05:34+00:00
Good. Maybe the companies training the LLMs should have created their own training data instead of mass-ingesting the contents of the Internet. (Though I doubt this sort of training instruction will actually be effective enough to be fun.)

Plus, if you're submitting code as yours, that code is your responsibility. "But the LLM generated bad code" isn't an excuse.
by qcnguy | 2026-01-04 13:06:42+00:00
I asked why, not how. In any democracy that question is easy to answer. You can look at the candidates platform or poll the voters to find out why someone won. You can't answer the question I asked, because nobody knows why she got the job. The vote in the Europarl had a single candidate choice (her) and nobody else. Literally a rubber stamp.