MurphyA/hacker-news huggingface dataset:
by ednite | 2025-06-18 13:06:55+00:00
The author makes a strong case against the current use of AI, and I agree that today’s tools can’t replace the deep thinking, creativity, and intuition that good programming requires. At best, they’re sophisticated parrots, useful in some ways, but fundamentally lacking understanding, maybe this will change down the road.

That said, there’s another angle worth considering. AI has introduced a new kind of labor: prompt engineers.

These aren’t traditional programmers, but they interact with models to produce code-like output that resembles the work of software developers. It’s not perfect, and it raises plenty of concerns, but it does represent a shift in how we think about code generation and labor.

Regardless of which side of the fence you're on, I think we can all agree that this paradigm shift is happening, and arguments like the authors raise valid and important concerns.

At the same time, there are also compelling reasons some people choose to embrace AI tools.

In my opinion, the most crucial piece of all this is government policy. Policymakers need to get more involved to ensure we're prepared for this fast-moving and labor-disruptive technology.

Just my two cents and thanks for sharing.
Show HN: IP-nose, C++ Géo-locator
by karim7793 | 2025-06-18 13:07:58+00:00
ip-nose is a Matrix-themed IP geolocation CLI tool built with C++. It offers IP detection, search history, a vibrant, colorized interface, and customizable configuration. Perfect for developers and network enthusiasts who appreciate cyberpunk style in their command line. Easy to compile and install with make.
by uberman | 2025-06-18 13:08:15+00:00
I was of the same mindset and did a similar test that also failed spectacularly. I asked for authoritative pros and cons on a subject in my field and asked it to cite sources. The pros and cons were ok, but the sources completely made up.

So, not so great there.

Then recently I had to modernize a python app written by someone who no longer works for the organization and was circa python 3.6. Several of the key libraries no longer supported the interfaces being called and there was no documentation at all.

On a whim I asked an LLM to help modernize the code, file by file and it cut the effort in half.

So, pretty great there.
by zeroping | 2025-06-18 13:08:17+00:00
Now I either need to charge it every day (and add the hassle of unplugging/plugging every time I use the car) or I need to think about it more.

I can't fathom not plugging my car in to charge when I park in my normal spot. It doesn't seem like much effort.

But my comment isn't to ridicule you - it's to point out how diverse and different our home charging experiences are, without awareness of others. I had no idea that anyone charged differently than I do.

Meanwhile, I have a motion-activated light switch in the garage. So I guess I don't want the hassle of flipping light switches, yet I plug/unplug daily.
by ghosty141 | 2025-06-18 13:08:23+00:00
> I’ve found SPoT (single point of truth) a better maxim than DRY

I totally agree. For example having 5 variables that are all the same value but mean very different things is good. Combining them to one variable would be "DRY" but would defeat separations of concern. With variables its obvious but the same applies to more complex concepts like functions, classes, programs to a degree.

It's fine to share code across abstractions but you gotta make sure that it doesn't end up tying these things too much together just for the cause of DRY.
by tialaramex | 2025-06-18 13:08:34+00:00
The cheapest available model once you have Theory of Mind (the idea that the other things in the environment might be thinking like you do) is that they're you again.

The Smarties test (What's in this Smarties tube - look it's not Smarties, ok now what does somebody else think is in the tube?) shows that humans need a further step to discover that model isn't enough.

But it's still cheaper and it's pretty good. It will correctly predict that this person you've never met before probably wants cake not death, just like you. It won't reliably predict whether they prefer lemon cake or coffee cake. But it's a good first guess.
by bookofjoe | 2025-06-18 13:08:46+00:00
>Proof of concept. It's a lot easier to do something, if you know it can be done.

This.

What I wanted to emphasize was how, after Bannister finally broke through the 4-minute barrier, many others did it soon after: 3 more in 1954; 4 in 1955; 3 in 1956; 5 in 1957; 4 in 1958.

List: https://imgur.com/a/UadE3xa
by frereubu | 2025-06-18 13:08:46+00:00
I get a 401 error with that link, but when I visit it from a search engine it's fine. I think they may have blocked referrals from HN, so if you see that message, try copying-and-pasting the URL into a new tab / window / incognito window. I read this a while ago, and as other say, it's worth it.
by bko | 2025-06-18 13:08:58+00:00
> they were protesting the fact that capital owners were extracting the wealth from their labour with this new technology and weren’t reinvesting it to protect the labourers displaced by it.

This capital versus labor dynamic is very common and an interesting way to frame things. But suppose you do take the view that all the wealth accrues to capital. What are the implications?

One implication would be to skip college, take that money and invest it in the stock market. Why invest in labor when capital grows faster? Although I don't think anyone with this mindset would offer that advice, but rather dwell in the fact that they are laborers by design with no hope of ever breaking that. Sure enough:

> I’m a labourer. A well-compensated one with plenty of bargaining power, for now. I don’t make my living profiting from capital. I have to sell my time, body, and expertise like everyone else in order to make the profits needed to support me and my family with life’s necessities.

Another point, in regards to productivity

> Did you know there’s no conclusive evidence that static type checking has any effect on developer productivity?

We don't need "conclusive evidence" for everything. You see this a lot with a lot of ridiculous claims. I don't need some laboratory controlled environment to prove that static type checking is more productive. How do I know? Because I've used statically typed and non-statically typed language and I'm more productive in statically typed. I remember the first time I introduced Flow, a static type checker to my javascript project and the amount of errors I had was really mind-boggling.

A lot of people agree with me and statically typed languages are popular and dynamically typed languages like Python are constantly adding typing tooling. It's a test of the market. People like these tools, presumably because they're making them more productive. Even if they're not, people like using them for whatever reason and that translates to something, right?

This scientism around everything is exhausting.
by sumtechguy | 2025-06-18 13:09:25+00:00
The same thing sort of happened in the compression realm. ZIP is the pretty much the defacto winner for that type of file movement. Oh people use others in a lot of cases. But even when pkzip 2.04 came out there were better ones. Yet here we are still 30 years on using zip. Heck the zip alg is even used in many picture formats.
by nothrabannosir | 2025-06-18 13:09:42+00:00
This feels like survivorship bias. Many of those older tools seem like they were once fancy new DSLs. We just respect them now as established, because they've been around for so long. But for every one thousand awkward DSLs that didn't make it, one new tool emerged which lifts software development to a new level.

Would you say the same about a parallel universe where LLMs were introduced in 1960?
by osigurdson | 2025-06-18 13:10:08+00:00
It seems unlikely that John Carmack doesn't understand his problem domain. Rather it is more likely the problem domain itself, i.e., game dev vs web dev. Game dev is highly stateful and runs in a single process. This class of program can logically be extended to any complex single computer program (or perhaps even a tightly coupled multi-computer program using MPI / related). Web dev effectively runs on a cluster of machines and tends to offload state to 3rd parties (like databases that, on their own look more like game dev) and I/O is loosely coupled / event driven. There is no debugger that can pause all services in web dev such that one can inspect the overall state of the system (and you probably don't want that). So, logging is the best approach to understand what is going on.

In any case, my suggestion is to understand both approaches and boldly use them in the right circumstance. If the need arises, be a rebel and break out the debugger or be a rebel and add some printfs - just don't weakly follow some tribal ritual.
by zaphar | 2025-06-18 13:10:54+00:00
It's more like no programmer of any age has the required coding kung fu to cope with C code. It is inevitable that they will introduce problematic code. We have decades of examples illustrating this. We lived with it because there was no truly competitive alternative for so long.

I can read and write C code from the times when there weren't any competitive alternatives. I have no problem reading or writing Rust code. In fact it communicates more to me than C code does or can and I can immediately understand more about the code written in Rust than I can about code written in C.
by jopsen | 2025-06-18 13:11:51+00:00
> If you want to know how to fight these fights, look at the permanent government bureaucracies. They prevail in the face of "new" ideas every 4 years.

Search youtube for "yes minister" :)

-----

On topic, I think it's a fair point that fighting is borderline useless. Companies that don't embrace new tech will go out of business.

That said, it's entirely unclear what the implications will be. Often new capabilities doesn't mean the industry will shrink. The industry haven't shrunk as a result of 100x increase in compute and storage, or decrease in size and power usage.

Computers just became more useful.

I don't think we should be too excited about AI writing code. We should be more excited about the kinds of program we can write now. There is going to be a new paradigm of computer interaction.
by rsynnott | 2025-06-18 13:11:56+00:00
I'm... slightly dubious, honestly, just because, historically, confident predictions of "this is the future of programming!" are almost always wrong. Throughout the 90s and into the early noughties, say, there was a very, very strong idea that things like VB and Delphi and Frontpage and Flash, where code was essentially intermingled with the UI, were The Future. And then all of that just died, to such an extent that there's really nothing like it at all today. Then there was the whole UML thing, and the "everything will run on XML" thing in the mid to late noughties...
by fainpul | 2025-06-18 13:12:09+00:00
> Let's say the external IP address you're going to use for that machine is 321.985.520.309 and the wireguard address of your local system is 867.420.696.005.

What is going on here with these addresses? I'm used to seeing stuff like this in movies – where it always destroys my immersion because now I have to think about the clueless person who did the computer visuals – but surely this author knows about IPv4 addresses?
by bowsamic | 2025-06-18 13:12:12+00:00
I mean that’s fine but then you can’t use a huge number of system APIs so it is actually a problem if you want to write software that uses your phones features. It is not okay just because iPhones or androids have a web browser. It’s insane to me that you’re even trying to argue that it’s not a problem that Apple do not let you write native software for iOS for free

Also iPhone is not just a US thing. I’m in Germany and iPhone is very popular here too
by rbanffy | 2025-06-18 13:12:35+00:00
You can store it inside the LH2 tank, but you'll need to use it completely before you run out of LH2 or it gets too hot. You might be able to inject it in a cold LH2 feed that doesn't pass by the cooling channels and injects directly into the combustion chamber so any N6 gets flushed into the chamber before the engine runs out of LH2. LH2+N6 needs to flow fast enough it doesn't heat up before it hits the chamber.

Still, one commenter mentioned this is too explosive to be used as an explosive. That kind of warns me against thinking too much about this.
by QuantumWanderer | 2025-06-18 13:12:55+00:00
I'd love if this turns into a social platform for apps. Facebook has text, Instagram has images, TikTok has video... Scrappy has apps. Apps. Not code.

View your friend's apps, use your friend's apps, remix your friend's apps to suit your needs.

But it needs to be all-in on speech. End-to-end abstracts away the concept of code. Speech-to-App.
by f38zf5vdt | 2025-06-18 13:13:19+00:00
It's funny -- I independently implemented the same thing (without vibe coding) and found it doesn't actually work. When I ended up with was a game of telephone where errors were often introduced and propagated between the models.

The only thing that actually worked was knowing the target language and sitting down with multiple LLMs, going through the translation one sentence at a time with a translation memory tool wired in.

The LLMs are good, but they make lot of strange mistakes a human never would. Weird grammatical adherence to English structures, false friend mistakes that no one bilingual would make, and so on. Bizarrely many of these would not be caught between LLMs -- sometimes I would get _increasingly_ unnatural outputs instead of more natural outputs.

This is not just for English to Asian languages, even English to German or French... I shipped something to a German editor and he rewrote 50% of the lines.

LLMs are good editors and suggestors for alternatives, but I've found that if you can't actually read your target language to some degree, you're lost in the woods.
by xhunmon | 2025-06-18 13:13:27+00:00
In HarmonyOS app development, dialogs are a very common interaction pattern, especially in scenarios where users must confirm actions or view system announcements. Sometimes, developers want to prevent dialogs from being closed by the system back key. The ArkTS @CustomDialog component does not support intercepting the system back key, but you can achieve this by using the Navigation component's NavDestination to intercept the back event and create dialogs that cannot be dismissed arbitrarily.

1. Core Implementation Approach Use the NavDestination component and set .mode(NavDestinationMode.DIALOG) to display the page as a dialog. Intercept the system back event by returning true in .onBackPressed(() => true), which prevents the dialog from being closed by the back key. Set .backgroundColor("#99000000") to create a semi-transparent overlay effect. Example core code:

NavDestination() { Stack() { // Custom dialog content } .backgroundColor("#99000000") .width('100%') .height('100%') } .onBackPressed(() => { return true; // Intercept back }) .mode(NavDestinationMode.DIALOG) .hideTitleBar(true) 2. Implementing a Reusable Project-Level Dialog 1. Create a dialog module and configure routing Create a dialog module under the common directory, and configure dependencies and dynamic import. Register the route in RouterPage: static readonly HINT_DIALOG: RouterInfo = RouterPage.create("@common/dialog", "hint_dialog", true); Implement harInit in the Index.ets file of the dialog module to dynamically import the page based on pageName: export function harInit(pageName: string) { switch (pageName) { case RouterPage.HINT_DIALOG.pageName: import('./src/main/ets/components/hint/HintDialog'); break; } } Register the page in the HintDialog file: RouterNav.registerPage(RouterPage.HINT_DIALOG, wrapBuilder(getPage)) 2. Component Implementation and Usage ...
by aaron695 | 2025-06-18 13:13:29+00:00
> That's not at all clear.

LLMs agree with OP. It's a failure, with important culture.

Steelmanning it, it's better than a corrugated metal shanty town. Although they would die in the cold.

The rich in the gers burn coal, the poor plastic. There is no water or sewerage.

It's one of the most polluted capitals in the world - https://www.unicef.org/mongolia/environment-air-pollution#:~...

Ulaanbaatar - https://geohack.toolforge.org/geohack.php?params=47_56_7_N_1...
by SirensOfTitan | 2025-06-18 13:14:14+00:00
There was a significant nerf of Gemini 3-25 a little while ago, so much so that I detected it without knowing there was even a new release.

Totally convinced they quantized the model quietly and improved on the coding benchmark to hide that fact.

I’m frankly quite tired of LLM providers changing the model I’m paying for access to behind the scenes, often without informing me, and in Gemini’s case on the API too—at least last time I checked they updated the 3-25 checkpoint to the May update.
by infecto | 2025-06-18 13:14:20+00:00
I understand the sentiment and agree but for me there is a line and I am not sure Inside Out meets the threshold for exposing culture. The changes are too minor to me in a children’s film that it has little impact. Broccoli to peppers is not a deep enough change. Now if the film had a Chinese new year celebration in it and they switched it entirely to a western new year celebration I would think that is a pretty drastic change that does hide cultural changes.
by WorldMaker | 2025-06-18 13:14:38+00:00
`const` works that way in most of the C family that uses it as a keyword or is restricted only to "primitive" types. To be fair, I agree that JS isn't really a C-style language under the hood and as a functional programming enthusiast I wish `const` was called `let` and `let` called something like `mut` or `let mut`, but JS likes its pretend-to-be-C-family surface level so I'm not upset about it.

`import` works great in the REPL, the various REPLs I use have caught up. Most of them in REPL mode let you redeclare imports and reimport modules as needed. They also all support top-level await so it's just as easy to use `let { thing } = await import('some-module.js')` if you want more of a safety net to redeclare as you wish.
by yoden | 2025-06-18 13:14:49+00:00
Machine translation is a great example. It's also where I expect AI coding assistants to land. A useful tool, but not some magical thing that is going to completely replace actual professionals. We're at least one more drastic change away from that, and there's no guarantee anyone will find it any time soon. So there's not much sense in worrying about it.

A very similar story has been happening in radiology for the past decade or so. Tech folks think that small scale examples of super accurate AIs mean that radiologists will no longer be needed, but in practice the demand for imaging has grown while people have been scared to join the field. The efficiencies from AI haven't been enough to bridge the gap, resulting in a radiologist _shortage_.
by arboles | 2025-06-18 13:15:48+00:00
Emphasis on the plural in "toolkits", X has one standard interface running on people's computers that window managers target. X environments end up having common behavior regardless of window manager, and for application developers having to target each Wayland display server with its own subset of protocols has to be less appealing. That is what that comment was getting at.

Application developers don't want to log your keyboard and aren't oblivious to security. The lack of a standard Wayland display server is a real grievance.
by dspillett | 2025-06-18 13:15:51+00:00
I agree, though to be a pedant:

> perhaps ONE of those articles

It is the same article each time, though the comments coming off the different postings of it might have unique nuggets of useful information to dig for.

> Thank you for providing links to the others though! I’m sure it will be helpful for someone.

It isn't as prominent as on other sites, so it isn't difficult to miss sat right at the bottom of the main page, but HN does have a working search function. I find searching for older posts this way can be quite useful for the above reason, when something comes up that has existed for a few years.
by benterix | 2025-06-18 13:15:57+00:00
> I don't buy this nonsense about Putin having ambitions beyond Right-Bank Ukraine.

It would be wonderful if it was true. Unfortunately the facts are different: he started a full-scale invasion planning to capture Kiev first and take over all Ukraine. He explained it very clearly here:

https://www.bbc.com/news/technology-60562240

In short, in his opinion Ukraine is not a real country and shouldn't exist, and he doesn't want to "leave this problem to future generations". Which is his typical language because already assumes that well-developed Ukraine is a threat to Russia, and that future generations will share his view on this.
by hombre_fatal | 2025-06-18 13:16:20+00:00
Yeah, grammars seem easy at first, but they're full of arcane knowledge like writing your tokens with the right affinity and greediness, ensuring back tracking is performant, and that you'll get good error messages.

Same with parser combinators. Not until a bunch of trial and error do you build up the intuitions you need to use them in production, I think.

Despite two decades of using those, I've found it much simpler to write my own scanning or RD parser.
by AnthOlei | 2025-06-18 13:17:44+00:00
The nix file is besides the point - it gives you a totally hermetic build environment. Not OP, but it’s the only way I know how to get gcc to use a static glibc. All you should pay attention to is that it’s using a static glibc.

$out is a magic variable in nix that means the output of the derivation - the directory that nix moves to its final destination
by Joker_vD | 2025-06-18 13:18:23+00:00
> Now, however, the server can no longer understand the changes you send. If you want to see your friend’s latest changes, you’ll need to both be online at the same time.

What? No, the server sends you the changes you've not seen yet, you decrypt and merge them, and so you get the latest version of the document. Right?

The homomorphic encryption is a fascinating topic, but it's almost never an answer if you need anything resembling reasonable performance and/or reasonable bandwidth.

I've seen a paper that ingeniuously uses homomorphic encryption to implement arbitrary algorithmic computations, totally secret, by encoding a (custom-crafted) CPU together with RAM and then running "tick a clock" algorithm on them. And it works, so you can borrow some AWS huge instance and run you super-important calculations there — at 1 Hz. I am not kidding, it's literally 1 virtual CPU instruction per second. Well, if you are okay with such speed and costs, you either have very small data — at which point just run your computation locally, or you're really, really rich — at which point just buy your own goddamn hardware and, again, run it locally.