MurphyA/hacker-news huggingface dataset:
by aa-jv | 2025-07-09 08:34:41+00:00
Open up your Ruby or Python or whatever, stick a breakpoint on a lower C function dependency that properly handles errno, and watch the error propagate into your languages runtime/execution context.

Problem? Nope.

errno handling has been long since adopted as a best practice, industry-wide, and the only ones who are going to get toasty fingers on this issue are newbs, or those grey beards who still think code coverage and static analysis are new-fangled tools of the trade.

So I'd argue that this problem is a straw man, the OP is just trying to find something edgy to whine about, and that actually - really the issue is that programmers just don't like to read docs, don't like to comply or conform with long-since settled standards, and are too heavily inflicted in this day and age with neurotic violations of the DRY rule to actually check themselves (or errno) before they wreck themselves (or their i/o thread) ...
by strogonoff | 2025-07-09 08:34:49+00:00
If you seek a GUI for managing/cataloguing photos, my advice would be to look for that and not a raw image processing tool that incidentally happens to also handle cataloguing (inevitably in a half-baked way).

I have never seen Lightroom (or C1, for that matter) as compelling at all ever since I started using RawTherapee. Unlike, say, InDesign, which is legitimately a difficult to replace professional tool with incredible capabilities, Adobe’s raw image processing offering looks incredibly dumbed down.
by junaidkhalid | 2025-07-09 08:35:32+00:00
I .. actually agree with you. Good thing is that i've kept a blog since 2017, bad thing is that uh, well.. I wasn't super active on that. But seeing how LinkedIn's been changing in these past few years, I'm starting to invest more and more time on the blog + a newsletter, so i own (not in that way) the audience and not the platform, even if it's lesser people
by Ygg2 | 2025-07-09 08:35:35+00:00
Not just the USA system. EU and especially German banks gave plenty of credits to Greek banks, knowing that they will probably spend it on German products, even if they have not much means to repay them. Plus, the EU knows full well that if Greeks overspend they can easily be pressured into austerity.

This went swimmingly for everyone involved, with Greece now in more debt than ever (debt went from 145.45% of GDP to 209.40% of GDP). And fascist parties going from virtually non-existent to mainstays.

Adding low-efficiency countries like those in southeastern Europe is great for the EU's major exporter - Germany, because it adds more customers who have Euros, and because it devalues the Euro, which means more exports. Better yet, because of Euro the new joiners can't devalue their currency and get their exports high enough to restart the economy, with only viable option being more in debt and/or leaving for Germany, while obliterating the local industries. Win-win-win. For the EU exporters.

So, yes, let's celebrate Bulgaria joining Hotel EU, where food is great, your bill grows exponentially, but you can't ever leave. By the end you'll just end up as a pool boy.
by yobbo | 2025-07-09 08:36:35+00:00
The shift described in the article is more about craftsmanship vs mass production (Ford's conveyor belt and so on) and disruption is not the right word as it took place over decades. Most people that started as coach builders could probably keep their jobs as fewer and fewer people started.

There were some classes of combustion engines that smaller shops did manufacture, such as big hot-bulb engines for ships and factories. Miniaturised combustion engines or electric motors are not suitable for craftsman-like building but rather standardised procedures with specialised machines.

The main mechanism is not "disruption" but rather a trend of miniaturisation and mass production.
by sublinear | 2025-07-09 08:36:56+00:00
> By using HATEOAS and referencing schema definitions (such as XSD or JSON Schema) from within your resource representations, you can enable clients to understand the structure of the data and navigate the API dynamically.

I actually think this is where the problem lies in the real world. One of the most useful features of a JSON schema is the "additionalProperties" keyword. If applied to the "_links" subschema we're back to the original problem of "out of band" information defining the API.

I just don't see what the big deal is if we have more robust ways of serving the docs somewhere else outside of the JSON response. Would it be equivalent if the only URL in "_links" that I ever populate is a link to the JSONified Swagger docs for the "self" path for the client to consume? What's the point in even having "_links" then? How insanely bloated would that client have to be to consume something that complicated? The templates in Swagger are way more information dense and dynamic than just telling you what path and method to use. There's often a lot more for the client to handle than just CRUD links and there exists no JSON schema that could be consistent across all parts of the API.
by MangoToupe | 2025-07-09 08:37:16+00:00
> You're denying future generations the chance love this print and cherish the opportunity to see one in person. Art is not just taking a photo and passing by, it's about appreciating the fact some human made some very special thing we can now enjoy

I personally don't get this attitude, but I also don't understand a lot of what draws people to museums when we have photographs of works of art. Which is not to say that I don't get why people view works i n person. I just don't understand neurotically trying to preserve a physical work when the author likely didn't even care that much or consider a more preservable medium to begin with.
by burnt-resistor | 2025-07-09 08:37:21+00:00
EPIC :nauseous face emoji:

That HP-Intel arrangement was weird. One time, an Intel-badged employee came out to change a tape drive on a (Compaq->HP->HPE) Compaq SSL2020 tape robot. Okay, I guess they shared employees. ¯\_(ツ)_/¯
by susam | 2025-07-09 08:37:33+00:00
I am not sure how you can prove this more "quickly". Trying to do it any more quickly involves claiming some result (no matter how trivial) that is not directly present in the ring axioms. But the whole point of this post is to derive everything strictly from first principles, using nothing beyond the ring axioms themselves.

Here is your argument elaborated step by step.

STEP 1: First we want to show that ab is the additive inverse of (-a)b. This is Theorem 3 of the post.

STEP 2: Next we want to show that (-a)(-b) is the additive inverse of (-a)b. This follows similarly to the proof of Theorem 3: (-a)(-b) + (-a)(b) = (-a)(-b + b) = (-a)(0) and (-a)(0) = 0 by Theorem 2 of the post.

But nothing in the ring axioms directly says that the above results mean ab and (-a)(-b) must be equal. How do we know for sure that ab and (-a)(-b) are not two distinct additive inverses of (-a)b?

THEOREM 5: We now prove the uniqueness of additive inverse of an element from the ring axioms. Let b and c both be additive inverses of a. Therefore b = b + 0 = b + (a + c) = (b + a) + c = 0 + c = c.

Now from Steps 1 and 2, and Theorem 5, it follows that ab = (-a)(-b).

So what did we save in terms of intermediate theorems? Nothing! We no longer need Theorem 1 (inverse of inverse) of the post. But now we introduced Theorem 5 (uniqueness of additive inverse). We have exactly the same number of intermediate theorems with your approach.
by msephton | 2025-07-09 08:38:22+00:00
It's the whole experience for me. It's a bit like asking why you would go to see a movie at the cinema when you can watch it on your smart phone—it's possible but when the opportunity to see it as its meant to be seen presents itself why wouldn't you? So it's the fact that it is "an original" (though there's no such thing with woodblocks)—in this case unique in many ways compared to any other imprint of The Great Wave. Plus the curation: when I saw one at Bristol they had other Hokusai works such as manga and his other waves and fuji that were kind of precursor to The Great Wave. ps: I made the site in the OP.
by jbhoot | 2025-07-09 08:38:39+00:00
Not exactly Indian English, but my favourite English word with an Indian origin is Juggernaut.

Its a morphed version of the name of an Indian deity – Jagannath.

From https://en.wikipedia.org/wiki/Juggernaut:

> A juggernaut, in current English usage, is a literal or metaphorical force regarded as merciless, destructive, and unstoppable. > This English usage originates in the mid-nineteenth century. Juggernaut is the early rendering in English of Jagannath, an important deity in the Hindu traditions of eastern and north-eastern India. The meaning originates from the Hindu temple cars, which are chariots, often huge, used in processions or religious parades for Jagannath and other deities, the largest of which, once set into motion, are difficult to stop, steer or control by humans, on account of their massive weight.
by junaidkhalid | 2025-07-09 08:38:48+00:00
I agree with the point you made, that's pretty much the only way to create a 'meaningful' relationship, or build trust.

But i'm thinking more in terms of just to share my thoughts/insights/learnings, etc. Blog & newsletter combo is good (i'm doing that for the last 1 year) but it requires far more effort than writing a ... for the lack of a better word, "LinkedIn post sized" content. You know, easy to write - easy to digest, gets the point across, and also gets to the "professional audience".
by piltdownman | 2025-07-09 08:38:51+00:00
Non-Schengen EU Passports are basically the same thing for e.g. inter-railing or other journeys involving multiple border crossings.

Also in Europe people use the likes of Revolut to set up virtual native currency accounts on the fly (with IBAN) with FX free transactions up to a certain level per month dependent on tier.
by jeroenhd | 2025-07-09 08:39:05+00:00
> I'm actually flabbergasted that malloc() isn't a blocking call on most OSs, that would wait until the requested amount of memory was available before returning.

In many cases, the memory is "available" in the form of swap space (once other applications are swapped out). In other cases it's hard to tell how much memory is available (swap space can be variable, like with compressed swap space/compressed memory).

It's not that hard to write your own malloc() that does this, of course; all you need is a quick wrapper like

void* malloc_blocking(size_t size) { void* out; do { out = malloc(size); if (out == NULL) usleep(100000); } while (out == NULL); return out; }

The problem with this "solution" is that malloc almost never fails. Applications don't typically handle malloc failure well, either; very few pre-allocate all the resources necessary to even log and notify the user of a memory allocation failure, let alone fail gracefully.

In my experience, Windows deals with low-memory situations a lot better. It has APIs notifying applications that memory is running low so they can clear caches (i.e. by using CreateMemoryResourceNotification) and will often try to extend the page file temporarily rather than kill applications if it can help it.

On Linux, you can measure the system memory state and application memory usage in a loop (do you check /proc/meminfo or the cgroup API? If so, which version? Good luck figuring that out!) but you're still left to the whims of the OOM daemon.

You cannot just "make sync" everything. Asynchronous code isn't written to make your life harder. It increases throughput and performance. That's why Rust still allows for asynchronous code in various methods (threads and async) with a whole type system to make memory exchange safe while maintaining performance.

Also, I've very rarely encountered bugs in any code I've debugged that are caused by asynchronous/nonblocking behaviour. You get a deadlock every now and then, but most bugs are either in the business logic layer or in code making assumption about things like "variables being initialized by the caller" and "pointers not being freed when used" or even just "pointers not being null". Using better languages and actually leveraging the many tools available these days can prevent most of those bugs.
by weberer | 2025-07-09 08:39:10+00:00
>Games you purchased on a Windows 98 machine later had their system requirements bumped up to Windows XP, then to Windows 7, then to Windows 10...

>Because the Steam client patches itself and because Valve was lying about contingency plans, their DRM prevents running Windows 98-era games on original hardware.

What about Linux? Steam has supported Linux since 2013, and is notably the only big store that does. Personally, I don't even see the other stores as competition since they don't even let you install them from my OS.
by signal11 | 2025-07-09 08:39:16+00:00
It comes from Sanskrit[1] and is fairly common in languages which use Sanskrit derived terms in large numbers eg some dialects of Bengali, but more importantly “sarkari” (government) Hindi which is way more Sanskitized vs regular Hindi. Regular Hindi even in the Gangetic plains is way more “hybrid”, and this is way before you come to eg Mumbai Hindi.

Here’s the term in gov.in: https://www.google.com/search?q=%E0%A4%95%E0%A4%B0%E0%A4%A3%...

Of course the Indian government loves “do the needful” as well: https://www.google.com/search?q=%22do+the+needful%22+site%3A...

But there’s evidence that “do the needful” might be an old English legal term as well. I’ve updated the parent comment. Further research is definitely required.

[1] https://sanskritabhyas.in/%E0%A4%95%E0%A4%B0%E0%A4%A3%E0%A5%...
by 6LLvveMx2koXfwn | 2025-07-09 08:40:37+00:00
Having read the CVE multiple times I am still unsure how 2. above happens? Is it possible through the malicious chart itself or is it a dependency for the CVE to be in play at all? And if the latter - what local process would write a symlink from a helm lock file to any kind of system start up script which doesn't point to a much bigger problem than this CVE?
by ktsangop | 2025-07-09 08:41:38+00:00
Maybe so, but we are both speculating on this. However the truth of what happened with the Euro is devastating.

Also the IMF was also part of the Greek debt restructuring deal, so it wasn't that different from what Brazil or other countries have experienced.

I am not against the Euro, far from it. But the EU could have handled this crisis much better for the benefit of both Greece and itself. The Greek economy wouldn't have collapsed, and the anti-Euro sentiment which led to the rise of ultra-right-wing parties in EU wouldn't grow that much.
Show HN: StopAddict – Track and beat your addictions by gaining XP
by skyzouw | 2025-07-09 08:41:59+00:00
Hi HN,

I built StopAddict, a simple app to help people quit addictions by turning the process into a game. Each day you resist your addiction, you earn XP and level up, building a visible streak to keep you motivated.

I created this because I noticed that tracking progress and visualizing small wins helps maintain discipline, especially in the first weeks of quitting. The app is lightweight, distraction-free, and designed to give a clear sense of progress without social features or ads.

You can try it here: https://www.stopaddict.net/

Feedback is welcome, especially on features you would find useful while trying to quit an addiction or improve your discipline.

Thanks.
by close04 | 2025-07-09 08:42:16+00:00
The only store that really stands out in that list is GOG so I don't really see it appropriately bundled with the others in the article. It's the one store with no DRM, you own the game. And you'll own it when the current owner/CEO dies and is replaced by a rent seeking MBA who charges you $10/mo to maintain access to the library of games you already "own" (for those who don't already do that).

For the rest of the stores some are better than others but at the end of the day they're "better features" rather than fundamentally better, like GOG is. Because ultimately what I'm doing is buying a game, not a forum or a review (as useful as those are), and definitely not renting a game.
by antfarm | 2025-07-09 08:43:55+00:00
Reading some of the answers in this thread, I think I would put all my resources into a global education program.

In my eyes the greatest challenge is to find a way to enable humanity to live in a way that does no longer destroy the ecosystem it relies on.

Unfortunately, the solution won't be just technological but rather social, educational and political.

We must find ways to stop overconsumption, overpopulation and to teach children (and people in general) the value of our natural environment.
by MangoToupe | 2025-07-09 08:44:19+00:00
> You know why people want to see the real thing for the same reason why a bunch of people want to go to concerts and listen to music that is objectively worse than the recording.

This seems like such a blatant apples and oranges comparison I'm not sure where to begin:

1. Live music is often better than studio recordings, 2. You can record memories with loved ones there that have no analogue in viewing a static piece of art, and 3. You're supporting a living artist.

People just want to view the mona lisa to because it's an easily purchasable experience widely seen to have value. Or something like that; to be honest, I don't quite grasp the psychology and visiting paris seems like it's not worth the effort.
by domk | 2025-07-09 08:45:01+00:00
Working with Shopify is an example of something where a good mental model of how it works under the hood is often required. This type of mistake, not realising that the tag is added by an app after an order is created and won't be available when sending the confirmation email, is an easy one to make, both for a human or an LLM just reading the docs. This is where AI that just reads the available docs is going to struggle, and won't replace actual experience with the platform.
by skyzouw | 2025-07-09 08:45:05+00:00
I’m curious: if you’ve tried to quit an addiction (or helped someone do it), what was the hardest part for you? Was it tracking progress, staying motivated after a slip, or something else?

My goal with StopAddict is to keep it minimal and genuinely helpful without turning it into another source of distraction. If you have thoughts on features that would make this more effective, or if you think XP and streak tracking would or wouldn’t help, I’d love to hear your perspective.
by lrvick | 2025-07-09 08:45:30+00:00
I worked on this project a bit back in the day as a teen. Bricked my first iPod trying to get a DIY uClinux kernel to boot on it within hours of getting it for Christmas. Took bricking 8 more warranty replacements before I finally got Linux to boot.

Weeks later thanks to a lot of community help, finally found the memory address for audio out and got music playback that was not beholden to any DRM.

This work was all referenced by the RockBox team that made a tiny embedded kernel and OS far more suited to the tasks.

Now all devices that can run rockbox are EOL and other community members are working on an open hardware player to run Rockbox.

https://github.com/amachronic/echoplayer

Couple decades in, but we are finally close to having the first fully featured fully open hardware music player, which all started back with reverse engineering iPods to run Linux kernels.

As someone that does not carry a cell phone, I am absolutely excited about this as it would be a daily driver for me.
by devjab | 2025-07-09 08:45:48+00:00
> You can't crash.

That's the exact point of runtime assertions. You can't crash, so you fail exactly at the moment something is corrupted. One of the reasons Go didn't devided to include runtime assertions (and one of the only choises for Go I really dislike) is that they aren't exactly safe because you still have to deal with that failure, and I suppose it's very easy to fuck it up.

What you're describing in your post is essentially what I think of when I say runtime assertion. You use them to revert to the previous valid state and retry, you can micro-reboot, you can go into a "factory setting" where your software can continue until an engineer can actually work on it. Things like that. The primary difference is that with runtime assertions, you stop exactly when the corrupted states occours instead of trying to continue with that corrupted state.

It's not like this should replace testing or any of the other things you bring up. I still strongly recommend testing. Tests are for prevention of errors, however, and runtime assertions are for dealing with errors when they happen at runtime. Exception handling is the other way around it, but with exceptions you continue with the corrupted state and try to deal with it down the line. I don't personally like that.

> Never fails isn't possible.

In the previous decade we've had 0 software failures causing shutdown of equipment in any of our many solar parks. This is not to say we haven't had failures. Last I checked the data we've had around 700. incidents which required human intervention, but in every case, the software was capable of running at "factory settings" until the component could safely be repaired or replaced. By contrast we've had quite a lot of hardware failures. Now... it's not exactly life threatening if parts of a solar plant fails, at least not on most plants. In almost any case it'll only cost money, and the reason we're so tight on not failing is actually exactly that. The contracts around downtime responsibility are extremely rigid and my organisation cares quite a lot about placing that responsibility outside of "us". So somewhat ironically we're doing software "right" in this one place because of money, and not because it's the right thing to do. But hey, the work is fun.

> Clean/clear/simple code.

I would replace "Clean" in this part, but it depends on what you mean. YAGNI > Uncle Bob!
by jeroenhd | 2025-07-09 08:45:50+00:00
I believe they're talking about memory.high (https://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.gi...):

memory.high A read-write single value file which exists on non-root cgroups. The default is "max". Memory usage throttle limit. If a cgroup's usage goes over the high boundary, the processes of the cgroup are throttled and put under heavy reclaim pressure. Going over the high limit never invokes the OOM killer and under extreme conditions the limit may be breached. The high limit should be used in scenarios where an external process monitors the limited cgroup to alleviate heavy reclaim pressure.

This is unlike memory.max, which does invoke the OOM killer. You can still reach memory.max after crossing memory.high, but you're less likely to do so if you have a method of dealing with the throttling.
by dgunay | 2025-07-09 08:46:27+00:00
Maybe "mismanaged" is too harsh. LA's patchwork governmental structure generally inhibits progress and keeps wealth and development concentrated in small areas instead of benefiting the broader metropolitan area. That's part of why you can go a few blocks in LA and your surroundings will change dramatically, often for the worse.

LA is top 1-5 in US cities by GDP (and to be fair so are the others you mentioned except for Seattle), so I personally see it as a hugely negative mark on our local and national character to have large parts of it be dirty, choked to death by traffic, have insanely high rents, etc. I don't know if other cities have quite as many structural aberrations in their governance as LA despite seeing many of the same issues - I don't know whether it would relieve or horrify me to learn that they don't.
by menaerus | 2025-07-09 08:46:36+00:00
It's fine with me if you think that the bottle caps were a worthy move, ok? We are different in the fact that I prefer to discuss objectively with arguments and not using the collective bias as you seem to impose on me without actually knowing anything about me. My mind is open for discussion but probably not suitable for the likes who cannot think out of the box. As for the grifter, I don't think you really understand the meaning of that word.