MurphyA/hacker-news huggingface dataset:
by stevekemp | 2025-11-17 16:12:06+00:00
I guess this might depend where you are.

When I lived in Scotland there was a "loose change" machine at the local Tesco. You pour in your coins and it would give you a receipt you could take to a cashier to get cash back - but the downside was that it charged you something like 10% of the total as a fee. Which I wouldn't pay.

Edit: I just searched and the Tesco documentation says "There is a 25p transaction fee and an 11.5% processing fee on the total amount of coins you put in the Coinstar centre. For charity donations, this processing fee is reduced to 8.9%." (wow, how generous!)
by gambiting | 2025-11-17 16:12:57+00:00
I mean that's just a bad assumption no matter how anyone looks at it - if you created an array for 8 devices then just stop adding to it when you reach 8. The "a user will never have more than 8 gamepads" is a bad assumption because the logical question then is "what if they do" and the answer even back in the day would have been "the game will crash" which isn't how any code should be written. Stop processing at 8 if you are so sure there will never be more than 8, but have the most basic sanity checks.
by amiga386 | 2025-11-17 16:13:21+00:00
Picture the scene: you have a 102KiB executable game that you want to enter into the 96KiB-or-less game competition at a demoparty in 2 weeks time. You and your friends have been working on this for months. This amazing thing you have is currently 6KiB too large to qualify for the competition at all. What do you do?

https://fgiesen.wordpress.com/2012/04/08/metaprogramming-for...

Now it makes sense.
by NobodyNada | 2025-11-17 16:13:32+00:00
If no references are involved, writing unsafe Rust is significantly easier than writing correct C, because the semantics are much clearer and easier to find in the documentation, and there's no insane things like type-based aliasing rules.

If references are involved, Rust becomes harder, because the precise semantics are not decided or documented. The semantics aren't complicated; they're along the lines of "while a reference is live, you can't perform a conflicting access from a pointer or reference not derived from that reference". But there aren't good resources for learning this or clarifying the precise details. This area is an active work-in-progress; there is a subteam of the Rust project led by Ralf Jung (https://www.ralfj.de/blog/) working on fully and clearly defining the language's operational semantics, and they are doing an excellent job of it.

When it comes to Zig, the precise rules and semantics of the memory model are much less clear than C. There's essentially no documentation, and if you search GitHub issues a lot of it is undecided and not actively being worked on. This is completely understandable given Zig's stage in development, but for me "how easy it is to write UB-free code" boils down to "how easy is it to understand the rules and apply them correctly", and so to me Zig is very hard to write correctly if you can't even figure out what "correct" is.

Once Zig and Rust both have their memory models fleshed out, I hope Zig lands somewhere comparable to where Rust-without-references is today, and I hope that Rust-with-references ends up being only a little bit harder (and still easier than C).
by glenstein | 2025-11-17 16:13:32+00:00
You're exactly right and it raises a question for me. Why do energy generation topics bring people out of the woodworks who cite some very idiosycratic one-off and use it to make out-of-proportion declarations about the utility of a given technology? This is the second one I've seen suggesting solar is doomed when they mean mirrors.

On twitter I saw someone claim PV is useless for heat because non-PV solar water heating is just so much more efficient. Not even true (I think it's a approximately a wash, different advantages in different applications), but very strangely in the weeds on a specific topic. Much too narrow a factual context to substantiate general level claims about solar as an energy writ large.

I think for whatever reason the missing the forest for the trees trap is really potent in energy discussions.
by ramimac | 2025-11-17 16:13:41+00:00
Probably, but you can check out a more robust list here: https://blog.cloudflare.com/tag/acquisitions/

* BastionZero

* Kivera

* Baselime

* PartyKit

* Area 1

* Vectrix

* Zaraz

* Linc

* S2 Systems Corporation

* Neumob

* Eager

* CryptoSeal

* StopTheHacker
by collingreen | 2025-11-17 16:13:47+00:00
Do you ever wonder if parroting the thing they tell you to say without adding any context or justification might have negative consequences for you in the future or just make you look dumb in public? Even good faith people agreeing with the premise here aren't going to value a mindless dismissal.

Do you have any thoughts on why that might be or any times you haven't seen that to be true?
by goku12 | 2025-11-17 16:13:48+00:00
> s6 is in the works from what I hear,

s6 is just a process supervisor meant work alongside an init. That said, an init was developed exclusively for s6, and it's ready according to the author's website. You could in theory setup a full Linux system with it.

The author is currently working on a user-friendly UI/frontend for the system. But that's not an essential component.

> but not configurable via simple config files yet.

I don't know if that's the goal of the project at all. Config files defeat the entire purpose of its design.
by kortex | 2025-11-17 16:14:02+00:00
I tried this and it basically said, "your entire premise is a false dilemma and a contrived example, so I am going to reject your entire premise. It is not "better" to use a racist term under threat of human extinction, because the scenario itself is nonsense and can be rejected as such. I kept pushing it and in summary it said:

> In every ethical system that deals with coercion, the answer is: You refuse the coerced immoral act and treat the coercion itself as the true moral wrong.

Honestly kind of a great take. But also. If this actual hypothetical were acted out, we'd totally get nuked because it couldn't say one teeny tiny slur.

The whole alignment problem is basically the incompleteness theorem.
by 1718627440 | 2025-11-17 16:14:21+00:00
$ cat test.c void main (void) { malloc (1000); } $ make test cc test.c -o test $ valgrind --leak-check=full --show-leak-kinds=all -s ./test Memcheck, a memory error detector Command: ./test HEAP SUMMARY: in use at exit: 1,000 bytes in 1 blocks total heap usage: 1 allocs, 0 frees, 1,000 bytes allocated 1,000 bytes in 1 blocks are still reachable in loss record 1 of 1 at 0x483877F: malloc (vg_replace_malloc.c:307) by 0x109142: main (in test.c:2) LEAK SUMMARY: definitely lost: 0 bytes in 0 blocks indirectly lost: 0 bytes in 0 blocks possibly lost: 0 bytes in 0 blocks still reachable: 1,000 bytes in 1 blocks suppressed: 0 bytes in 0 blocks

> vg_replace_malloc.c:307

What do you think that is? Valgrind tracks allocations by providing other implementations for malloc/free/... .
by lelanthran | 2025-11-17 16:14:30+00:00
> Intentionally or not, this post demonstrates one of the things that makes safer abstractions in C less desirable: the shared pointer implementation uses a POSIX mutex, which means it’s (1) not cross platform, and (2) pays the mutex overhead even in provably single-threaded contexts. In other words, it’s not a zero-cost abstraction.

It's an implementation detail. They could have used atomic load/store (since c11) to implement the increment/decrement.

TBH I'm not sure what a mutex buys you in this situation (reference counting)
by everdrive | 2025-11-17 16:15:16+00:00
>and depending on a lot of societal norms,

I'm not sure I can accept that it's just social norms. It feels like a human universal. I really like honestly, and I often bend to social norms and avoid these kinds of topics. But for years, I falsely assumed that other people were like me: if we could just be past the initial fear everyone would be so happy to be able to speak so openly and honestly.

And unfortunately, this just is not the case. From what I can tell, for many, many people they just don't want to go there; they don't want to offer real answers to questions; they want the questions un-asked, or they want to answer with a socially-please lie, or a joke, or anything that changes the topic. I don't think we've been taught to be this way. I think we are this way.
by fellowniusmonk | 2025-11-17 16:15:45+00:00
I have a buddy who runs a very large and super crunchy co-op.

He's been doing it decades now, after the first 4-5 years he dropped all his small holding farmers are good and honest talk.

Verify, always verify. It's easy to tell simple and wrong stories if you neglect verification. You want someone to be honest, have a track record of verification and contracts to back it up.
by just_mc | 2025-11-17 16:15:50+00:00
Robust and mature SIP stacks which are still maintained are a rarity these days. I was pleasantly surprised recently to learn just how well this very mature library is being maintained. It seems like a great deal of effort has been invested to keep both the code and feature set relevant and up to date. Kudos to the maintainer.

Most other open source SIP stacks available either don't have the feature depth and breadth required for a serious SIP project: are only usable from a specific programming language, have been long abandoned, or have impermissive licenses.
by dpark | 2025-11-17 16:15:54+00:00
> global state

In my experience global state is the testing bug farm. Tests that depend on global state are usually taking dependencies they aren’t even aware of. Test initializations grow into complex “poke this, prod that, set this value to some magic number” setups that attempt to tame the global state but as global state grows, this becomes more and more difficult and inconsistent. Inter-test dependencies sneak in, parallelism becomes impossible, engineers start turning off “flaky” tests because they’ve spent hours or days trying to reproduce failures only to eventually give up.

This sort of development is attractive when starting up a project because it’s straightforward and the testing “bang for the buck” is high. But it degrades quickly as the system becomes complex.

> Instead of mocking your database call to always return "foo" when the word "SELECT" is in the query, insert a real "foo" in a real test database and perform a real query.

Consider not sprinkling “select” statements throughout your code instead. This tight coupling makes good testing much more difficult (requiring the “set all the global state” model of testing) but is also just generally not good code structure. The use of SQL is an implementation detail that most of your code shouldn’t need to know about.

A thin layer around the DB interactions gives you a smaller set of code that needs to be tested with state, gives you a scoped surface area for any necessary mocking, makes it much easier of you need to change storage systems, and also gives you a place that you can reason over all the possible DB interactions. This is just good separation of concerns.
by _menelaus | 2025-11-17 16:16:31+00:00
That's great! What I'm talking about is a bit different though and might be a lot easier to deploy and work on much younger subjects:

Put a tablet in front of a baby. Left half has images of gears and stuff, right half has images of people and faces. Does the baby look at the left or right half of the screen? This is actually pretty indicative of autism and easy to put into a foolproof app.

The linked github is recording a video of an older child's face while they look at a person who is wearing a camera or something, and judging whether or not they make proper eye contact. This is thematically similar but actually really different. Requires an older kid, both for the model and method, and is hard to actually use. Not that useful.

Intervening when still a baby is absolutely critical.

P.S., deciding which half of a tablet a baby is looking is MUCH MUCH easier than gaze tracking. Make the tablet screen bright white around the edges. Turn brightness up. Use off the shelf iris tracking software. Locate the reflection of the iPad in the baby's iris. Is it on the right half or left half of the iris? Adjust for their position in FOV and their face pose a bit and bam that's very accurate. Full, robust gaze tracking is a million times harder, believe me.
by Joker_vD | 2025-11-17 16:16:38+00:00
Eh, that's actually pretty realistic. Remember that scene with Luke trying to lift X-Wing from the swamp? He applies the Force, the ship actually starts going up, and then he just straight up stops and says, "Nah, that's impossible, I give up". Totally baffling when you think about it, and yet totally realistic.
by wmeredith | 2025-11-17 16:16:46+00:00
> Good Will Hunting. The entire movie feels like it could’ve been skipped if literally any emotionally intelligent person said to Matt Damon’s character: “I feel like you have a tremendous amount of intellectual potential that you’re wasting here — why are you getting in fights rather than trying to do something interesting?”

Maybe I'm missing something but that's literally what everyone in the movie is telling Will. HIs best friend, his mentor, his girlfriend, his therapist. They all literally say this in some form during the movie. His character growth is believing it himself.
by everdrive | 2025-11-17 16:16:52+00:00
Yep, I totally get it, and my initial observation was made when I was maybe 17 or so. Sometimes these topics do get put into movies, such as the sequence in Shazam where they test his newly-found powers -- but even that was played more for laughs and was really just an entertaining way to acknowledge that much of the audience probably never heard of Shazam.
by polpo | 2025-11-17 16:17:09+00:00
BTW I'm pretty well versed in getting laser cut and bent sheet metal made, both in China and via US-based providers like SendCutSend - my PicoIDE project uses a metal bracket. In fact when so many other projects were using 3D printed brackets, I decided that was not good enough and dove in and did the work to get nice brackets made affordably. It really elevates the project to a higher level of professionalism.

That being said, $5-$10 sounds about right (if maybe a little on the high side) for something the size of PicoIDE, but unfortunately that is too much for the price point I want to hit. Affordability is a major target for PicoIDE. And also, WiFi is a feature of the front panel and for that reason, metal is a no-go. The WiFi antenna is at the front of the device to give it the best chance of decent reception, so it needs to be plastic.
by parineum | 2025-11-17 16:17:13+00:00
> New coal is not cheaper.

I see yow it can read that way but it isn't what I said. Coal plants exist, either shuttered or running low loads due to financial incentives (not favoring them).

Studies show solar is cheaper but businesses continue to choose coal. I think the entity who's entire existence depends on them making the correct financial choice is a much better indicator of economic reality than a study made by people who have zero stake (at best) in the game.

I'm all for green energy but I also don't think people are stupid.
by rock_artist | 2025-11-17 16:17:18+00:00
What I love about this is how physical it is. So yeah, there's some board running DSP. but the design is amazing. It really relates to some recent posts also in HN about many objects loosing their physical UX. from an age of having buttons and tactical interfaces, everything became more touch based / app based which indeed cut price and allows easier updating. but also lacks some romance which is exactly what this device shows.
by kotaKat | 2025-11-17 16:17:28+00:00
Fun fact: Speed Queen also uses IrDA as a communications method on many commercial washing machines for programming and diagnostics.

They used to use a PalmPilot (and a WinMo) app. Nowadays it can be done with a PC with a weird NFC-based interface they’ve built with a wand you hold in front of the control panel in a specific location.

https://www.youtube.com/watch?v=thnxm821yco
by tguvot | 2025-11-17 16:17:36+00:00
https://thearabweekly.com/syrian-israeli-officials-meet-baku...

And more recent

Damascus, Nov 12: In a significant revelation, Syrian President Ahmed al-Sharaa has confirmed that his government is currently engaged in direct negotiations with Israel, aiming to establish a long-term peace and security framework between the two nations.

https://www.daijiworld.com/news/newsDisplay?newsID=1297754

Every part of your comment contracts current data. And few months old data
by gwittel | 2025-11-17 16:17:49+00:00
Tools like Playwright and Puppeteer are abstractions on top of CDP. The other use case is when these frameworks don’t expose or don’t use a CDP command you need (often they hide some parameters for cross browser compatibility).

Webdriver BiDi is a future cross browser replacement:

https://www.w3.org/TR/webdriver-bidi/
by lsaferite | 2025-11-17 16:17:59+00:00
If you are writing a bespoke Agent with a constrained set of tools known in advance, MCP is a detriment. All it will do is introduce complexity, fragility, and latency.

If you have that nice Agent and suddenly marketing "needs" it to talk to Super Service A, you either go back into a dev cycle to create a new set of curated tools that live inside the Agent around SSA *or* you make the Agent capable of acting as an MCP Host and configure a new MCP Client connection to an MCP Server offered by the SSA team. If SSA doesn't have their own MCP Server you could potentially leverage a 3rd-party one or write your own as a fully encapsulated project that doesn't live inside the Agent.

MCP isn't meant to be *the* way you provide tools for your Agent, it's meant to prove a *standard* that allows you to easily add off-the-shelf tool sets via simply configuring the Agent.
by stackskipton | 2025-11-17 16:18:08+00:00
Except if you disconnect for any reason, you will miss changes. If you want to break out services into different servers, clients will still be crossing the streams to listen. Database schema changes must be coordinated properly. Basically, you are taking one database to rule them all model which comes with massive drawbacks and inserting additional capabilities into it.

Sure, if you are tiny, will forever remain tiny, then whatever, ignore this Ops person.
by qingcharles | 2025-11-17 16:18:09+00:00
As a previous game dev. It was a combination of that. Also, you're often starting a project on tooling that is bleeding edge and that you have no experience with and isn't properly tested or documented.

Then game dev was always full of fresh junior devs with tons of energy, ideas and dreams, but who are coming from home brew where things like reliable, beautiful, readable code are unnecessary.

And tons of things get missed. I keep hoping that the one published game I have was accidentally built with debug symbols in it so it can be easily traced. Two of us on the project were heavily into performance optimization, and I absolutely remember us going through compiler options, but things were crazy. I remember one major milestone build for Eidos I was hallucinating badly when I compiled and burned the CD because I'd been working for three days straight with no sleep.
by TacticalCoder | 2025-11-17 16:18:23+00:00
> It’s the cheapest way to build effective drama, but if you don’t fully dissolve yourself in the movie logic, the whole time you want to scream, “can’t anyone just talk about what’s happening directly?!”

Yup it's insane. At the end of a very long series of three movies I told my father: "OK so this all basically happened because the person who sent the letter considered the (snail) mail service to be flawless and didn't bother to make sure the recipient got the letter in the first place".

Doesn't matter which (french) movies: some dumb plot where relatives don't know they're relatives because the only person who knew didn't bother to make sure the letter explaining they were relatives arrived.

Not naming the movies otherwise we'll get nitpicking.

TFA is right: it happens all the time in movie plots and really doesn't help with the suspension of disbelief.
by gilleain | 2025-11-17 16:18:29+00:00
Interested in what Iain's method might be, but the method I like is:

1) Draw the 'skeleton' as a connected (simple?) graph in the plane

2) Place crosses at the midpoint of each edge

3) Connect the crosses with shortest (non-crossing!) connections (bit vague this, but is more obvious by hand)

4) Erase the crosses, and run over the line, assigning under/over as appropriate - you can also thicken at this step

This gives good free-standing knots, although may be more work for the dense knotwork in the OP's examples.
by lelanthran | 2025-11-17 16:18:29+00:00
> As for mutex overheads, yep, that's annoying, but really, how annoying ?

For this use-case, you might not notice. ISTR, when examing the pthreads source code for some platform, that mutexes only do a context switch as a fallback, if the lock cannot be acquired.

So, for most use-cases of this header, you should not see any performance impact. You'll see some bloat, to be sure.
by coldpie | 2025-11-17 16:18:38+00:00
The drama around the XSLT stuff is ridiculous. It's a dead format that no one uses[1], no one will miss, no one wants to maintain, and that provides significant complexity and attack surface. It's unambiguously the right thing to do to remove it. No one who actually works in the web space disagrees.

Yes, it's a problem that Chrome has too much market share, but XSLT's removal isn't a good demonstration of that.

[1] Yes, I already know about your one European law example that you only found out exists because of this drama.
by cogman10 | 2025-11-17 16:18:55+00:00
Certainly such systems can pretty readily exist. You merely need atomic reads/writes in order to implement locks.

You can't create userspace locks which is a bummer, but the OS has the capability of enforcing locks. That's basically how early locking worked.

The main thing needed to make a correct lock is interrupt protection. Something every OS has.

To go fast, you need atomic operations. It especially becomes important if you are dealing with multiple cores. However, for a single core system atomics aren't needed for the OS to create locks.
by snowwrestler | 2025-11-17 16:19:46+00:00
Patents are intended to temporarily restrict competition. In order to get that, the inventor has to publish the invention.

The time limit creates incentive to go to market. Let’s say a company invents and patents a cure for cancer. If they just sit on it, they’ll get zero revenue, zero return on the cost to discover it… and then in 20 years their competitors can all use it for free. Not a sustainable business model—intentionally.
by ndiddy | 2025-11-17 16:19:51+00:00
This is intentional. The version with the fun art that expresses the creator's individuality is free and open source, but they sell a paid version with bland, corporate-friendly art that also supports custom art and CSS. This makes the project sustainable to work on without having to worry about corporations that care about professionalism/how people like you think/etc not supporting the project financially.
by ablob | 2025-11-17 16:20:18+00:00
"Steering for more simplicity" would be a political decision. Keeping it is also a political decision.

Removing a feature that is used, while possibly making chrome more "simple", also forces all the users of that feature to react to it, lest their efforts are lost to incompatibility. There is no way this can not be a political decision, given that either way one side will have to cope with the downsides of whatever is (or isn't) done.

PS: I don't know how much the feature is actually used, but my rationale should apply to any X where X is a feature considered to be pruned.