MurphyA/hacker-news huggingface dataset:
by AdamConwayIE | 2025-07-24 18:20:02+00:00
People always forget that back when OpenAI accused DeepSeek of distillation, o1's reasoning process was locked down, with only short sentences shared with the user as it "thought." There was a paper published in November 2024 from Shanghai Jiao Tong University that outlined how one would distill information from o1[1], and it even says that they used "tens of thousands" of o1 distilled chains. Given that the primary evidence given for distillation, according to Bloomberg[2], was that a lot of data was sent from OpenAI developer accounts in China in late 2024, it's not impossible that this (and other projects like it) could also have been the cause of that.

The thing is, given the other advances that were outlined in the DeepSeek R1 paper, it's not as if DeepSeek needed to coast on OpenAI's work. The use of GRPO RL, not to mention the training time and resources that were required, is still incredibly impressive, no matter the source of the data. There's a lot that DeepSeek R1 can be credited with in the LLM space today, and it really did signify a number of breakthroughs all at once. Even their identification of naturally emergent CoT through RL was incredibly impressive, and led to it becoming commonplace across LLMs these days.[3]

It's clear that there are many talented researchers on their team (their approach to MoE with its expert segmentation and expert isolation is quite interesting), so it would seem strange that with all of that talent, they'd resort to distillation for knowledge gathering. I'm not saying that it didn't happen, it absolutely could have, but a lot of the accusations that came from OpenAI/Microsoft at the time seemed more like panic given the stock market's reaction rather than genuine accusations with evidence behind them... especially given we've not heard anything since then.

https://github.com/GAIR-NLP/O1-Journey https://www.bloomberg.com/news/articles/2025-01-29/microsoft... https://github.com/hkust-nlp/simpleRL-reason
by kube-system | 2025-07-24 18:20:29+00:00
The efficiency of the entire system is more important than the efficiency of the engine itself. Charging the battery and then discharging it also incurs losses. Many series hybrids will prioritize generating electricity when some of it is also required to directly drive the motor. They usually don't sit around at low-load situations just generating electricity, unless SOC is low.

> The gas engine has maximum efficiency at about 80% throttle.

ICE efficiency varies in multiple dimensions based on load and RPM, and in a series hybrid, you have some ability to dynamically influence these... throttle would be one of those inputs.
by perihelions | 2025-07-24 18:20:41+00:00
> "large enough machines to not OOM before markets closed for the day"

Reminded of that missile defense system that was designed to be software-reset once a day, except the design assumptions changed (a war started) and it was ordered to be left running nonstop, as an emergency measure; after being left on for a week, failed, causing a large number of deaths. That one had some kind of integrator that accumulated floating-point roundoff over time.
by henry700 | 2025-07-24 18:20:47+00:00
The natural solution for this is a private constructor with public static factory methods, so that the user can only obtain an instance (or the error result) by calling the factory methods. Constructors need to be constrained to return an instance of the class, otherwise they would just be normal methods.

Convention in OOP languages is (un?)fortunately to just throw an exception though.
by the_af | 2025-07-24 18:20:51+00:00
There's inequality and inequality.

Dubai seems at the extreme of inequality, corruption, and ostentatiousness of the few ultra-rich. Also an extreme caste system with very few citizens (about 92% of Dubai is non-citizens, and you cannot obtain citizenship either as far as I know: you're born into it). It's a luxurious place built on the labor and exploitation of a second-class of people that can never become citizens, by design.

It's not "just human nature" that "nobody can change".

Being "condescending" against the ultra-rich is not something that should make anyone lose their sleep. It's punching up, not down.
by PuercoPop | 2025-07-24 18:21:06+00:00
junit was not invented, it was a port from Smalltalk's SUnit, which was created on 1989, ~6 years before the first release of Apache. Yes, the extreme programming (XP) craze hadn't popularized TDD, but united testing as a practice already existed, even if only some communities.

Though I agree, that although not a technical justification, an explanation as to why there are no tests is because Apache HTTP is from the 90's. Not writing unit tests was par for course back then. Most FLOSS code bases in the 90s didn't have unit tests, let a alone a CI to run the test suite for each change. Adding tests later is hard. Though there are some tests under the test folder.
by CuriouslyC | 2025-07-24 18:21:45+00:00
Covering music can be fun but is a bad way to learn. You spend a lot of time memorizing note sequences, a good amount of time nailing the exact timing of lines to make them sound right and usually some time working out the challenging technical aspects of a song you're not at the level to play yet. The problem is the memorization and song-specific timing practice have very low carry over to general musical skill. If you're trying to get as good at an instrument as possible, it's much faster to do a combination of scale/chord/arpeggio and technical challenge drills.
by mattnewton | 2025-07-24 18:21:57+00:00
Exactly what most AI researchers would have predicted, if you force like 30% of the worlds top ai researchers to use something other than CUDA, they’ll work on improving the tools for something other than CUDA.

It’s wild the same administrations would argue for restricting access to the US market for tariffs to strengthen domestic production, would not believe that severely restricting exports to the Chinese market would strengthen their domestic production
by bitwize | 2025-07-24 18:22:01+00:00
YAGN more experimental/niche window managers. Windows and macOS get by fine on one apiece, in fact their desktop story is better because their WM and toolkit is standardized.

The developers of Wayland (who are identical to the developers of Xorg) aspire to more of a Windows/Mac-like ecosystem for Linux, in which standardization, performance, and support for modern graphics hardware without hacks or workarounds are prioritized over proliferation of niche window managers and toolkits
by gpderetta | 2025-07-24 18:22:14+00:00
It is not so much that windows and linux were relying on UB, but that these platforms, with their compilers, provided guarantees beyond the standard. e.g. GCC not only aims for C/C++ standard compliance, but also POSIX.

Of course these guarantees were often not fully written down nor necessarily self consistent (but then again, neither is the current standard).
by 9rx | 2025-07-24 18:22:53+00:00
> The only reason it didn't end on pile of obscure languages nobody uses, it called Google

Dart ended up on the pile of languages nobody uses. And Carbon? What's Carbon? Exactly!

> Case in point, Limbo and Oberon-2, the languages that influenced its design

Agreed. Limbo and Oberon-2, as primitive as they may look now, had the kitchen sinks of their time. Why wouldn't they have ended up on the pile of languages nobody uses?
by johnhuiscool | 2025-07-24 18:23:00+00:00
The billing complexity point really resonates. I've been through the Stripe integration pain multiple times and you're right that it's gotten harder, not easier, especially for new devs. The number of edge cases you would have to handle for even "simple" subscription logic is wild.

One thing I'm curious about - when you say "any pricing model in 3 function calls," what are some of the more complex models you've seen customers implement? Usage-based billing can get pretty gnarly.
by dragontamer | 2025-07-24 18:23:03+00:00
> but I think I'd decided I would have to swizzle the data in a way that was a pain because of how the aes mixdown works (ie it mixes across lanes, so I would have to change the output pattern, if that makeshifts sense)

100% agree.

I solved this with a 64-bit x2 SIMD add instruction. State += 0x0305071113171923, which ensures a 1-bit 'carry bit' dependency as well so we have (barely) enough data mixing for lots of cool entropy effects.

Because this is an odd number (bottom bit is 1), it cycles every 2^64, which should be a sufficient cycle length for most simulations.

That 1-bit difference was enough to then pass PractRand and BigCrush.

Don't swizzle the bits. Just add a number across all 128-bits (as 2x 64-bit adds) and bam. We get a lot of lovely RNG properties thanks to AES mixing.

It's not 'purely' aesenc. I did a few little tidbits that fixed all the problems of AES data mixing.

------

The real fun part is that the latency/dependency limitation on my code is this Add instruction. The AES stuff is done in parallel later and thus easily parallelizes to modern 4x512-bit AES as is available on Zen5. (Maybe the compilers won't see it yet, but it's bloody obvious for humans to see it IMO).

IE: the critical path of my code is:

simd-add state, 0x030507.....

State gets SSA'd by the out of order system on the processors and thus future iterations of the RNG loop can execute in parallel.
by recursivecaveat | 2025-07-24 18:23:06+00:00
The situation with numbers in basically every widely used programming language is kind of an indictment of our industry. Silent overflow for incorrect results, no convenient facilities for units, lossy casts everywhere. It's one of those things where standing in 1975 you'd think surely we'll spend some of the next 40 years of performance gains to give ourselves nice, correct numbers to work with, but we never did.
by 3cats-in-a-coat | 2025-07-24 18:23:21+00:00
This is wasm-dom for Rust: https://crates.io/crates/wasm-dom There's also web-sys. Those are Rust centric, I'm sure there are others, but basically you only need the whim once, and then you write in your language of choice and compile to WASM, you never have to think about JS. Although... I may question the purist attitude. But you can do it.

Think of it like HTMX, the way people say it "avoids working with JS" (HTMX itself is written in JS). Same principle.
by chasd00 | 2025-07-24 18:23:52+00:00
I feel like I remember a pickup being available that was a 6L v8. So one cylinder in that engine had almost the same volume as all the cylinders in a 1.5L engine combined. That's pretty crazy to me.

edit: oh it was mine heh, my first car was a 1979 ford with a 460 ( 7.5L v8 ). It was a hand me down from my grandfather, he said if i could get it running i could have it.
by jmull | 2025-07-24 18:24:11+00:00
> What’s interesting is that when a frame is found to have a missing or invalid checksum, SQLite drops that frame and all the subsequent frames.

Skipping a frames but processing later ones would corrupt the database.

> SQLite doesn’t throw any error on detection of corruption

I don’t think it’s actually a corruption detection feature though. I think it’s to prevent a physical failure while writing (like power loss) from corrupting the database. A corruption detection feature would work differently. E.g., it would cover the whole database, not just the WAL. Throwing an error here doesn’t make sense.
by whycome | 2025-07-24 18:24:15+00:00
My car (an old Jetta) lasted ~20 years and was still good to go when I got rid of it. Only the body itself had any issues. I suppose the use would vary based on terrain? It was useful to get to a gear with more torque for taking off again. And I guess you’re not doing it from really high revs — so it was just using the engine to slow things
by avinassh | 2025-07-24 18:24:27+00:00
> As a SQL-first developer, I don't pick apart write-ahead logs trying to save a few bytes from the great hard drive in the sky, I just want the database to give me the current state of my data and never be in an invalid state.

Yes, that is a very valid choice. Hence, I want databases to give me an option, so that you can choose to ignore the checksum errors and I can choose to stop the app and try to recover.
by ameliaquining | 2025-07-24 18:24:47+00:00
I agree that the term "undefined behavior", when used as in C/C++/Rust/Swift/.NET, isn't very good at communicating to non-experts what's at stake, not least because it doesn't sound scary enough (the security community remains indebted to whoever coined the term "nasal demons"). That said, is there a specific other community of practice where there's a shared understanding that the term "undefined behavior" means something different?
by benreesman | 2025-07-24 18:24:48+00:00
Intel is a great example of the fact that between stupidity and low-integrity behavior as a default, the people in charge fuck up in ways that the man on the street would get right.

Defense is starting to get a blank check with fairly bipartisan support for the first time in at least 30-40 years and it's centered on semiconductor supply chains. There has never been a better time to secure the fucking funding, have ASML send twice as many people as they already have, and power through it. The market is whatever you want and the margins are whatever you want: in a functioning system? You fucking do it.

And while I will believe that Intel has suffered serious attrition in key posts, there's no way that the meta-knowledge of how to debug "we don't have the fabs running right, who do we hire, what so we need to give them to get it done" has evaporated in 5-10 years from the singular source of this institutional muscle memory in the history of the world.

The failing here is more like a failing in courage, or stamina, grit, something. It's a failure of the will to do the right thing for both the shareholders and the country.
by dev-table | 2025-07-24 18:25:05+00:00
I've created an open source package to visualize the forward pass any Pytorch model within notebooks like Jupyter, Google Colab and VSCode notebook. It's called torchvista.

Unlike many other tools, torchvista lets you interactively explore very large models with dragging/zooming support, and also allowing you to expand/collapse nested modules.

Also, it helps debug errors in models (it works even if the model fails midway during the forward pass).

There are some web-based demos in the Github of well known models if you want to check them out before installing it via pip: https://sachinhosmani.github.io/torchvista/

Keen to hear your feedback!
by milesvp | 2025-07-24 18:25:06+00:00
I once worked a night shift stocking job just after college. I was in phenomenal shape without hitting the gym. I was at my lowest weight with a ton of lean muscle as a result of moving heavy loads and stocking paint every night. I also did the math at one point, and given the size of the warehouse I was probably walking quickly 8 miles during my shift. It became a chore to eat enough calories every day. Somewhere around 4000 calories/day, you may still be hungry, but you are generally full. Also food sort of becomes boring, and the desire to eat just isn't as strong.

That said, it was 4-6 hours 4 nights a week. That is a lot of time to spend to burn all those calories. It is really not hard to eat an extra 100 calories per day, but it takes a lot of effort to burn an extra 100 calories. It's the asymmetry here you absolutely have to respect. Further, at least for me, there is another asymmetry in terms of satiation vs hunger. It is much easier to be slightly satiated than it is to be slightly hungry. What this means, is that there is a tendency to be driven to eat slightly more than your body needs. This is partly why the GLP-1 drugs seem so effective, is that they seem to flip this asymmetry in the other direction, which means weight loss is the default, instead of weight gain.
by Doxin | 2025-07-24 18:25:28+00:00
> I still can't fathom a use case for nesting f-strings within an f-string substitution

Isn't that mostly just a side effect of using the proper full python parser for F-strings? The syntax for what was allowed inside an F-string kept getting more and more permissive, until they just decided to permit ~all of python inside an F-string.
by thewebguyd | 2025-07-24 18:25:28+00:00
Yeah, I never understood the argument. You're just trusting Apple vs. trusting the dev, either way you are trusting an entity that may or may not act in your best interest, and both entities are subject to subpoena. They could also just use firebase cloud messaging and treat it just like APNS.

There's nothing magical about Apple's services that makes them immune to government requests for data, despite Apple's privacy marketing.
by sandspar | 2025-07-24 18:25:31+00:00
Silicon babies extend our emotions of love. Would you say that love has value, even if it doesn't correspond to reality? For example, I may believe my dog misses me when I'm away, and love him for it. Am I ennobled by my love for him, whether he actually misses me or not? As in, might my love for him spread around, and make me more likely to forgive my neighbor or help a friend?
by rhubarbtree | 2025-07-24 18:25:52+00:00
It can be annoying though.

I think Rich Hickey has a point that bugs like this almost certain get caught by running the program. If they make it into production it usually results in an obscure edge case.

I’m sure there are exceptions but unless you’re designing for the worst case (safety critical etc) rather than average case (web app), types come with a lot of trade offs.

I’ve been on the fence about types for a long time, but having built systems fast at a startup for years, I now believe dynamic typing is superior. Folks I know who have built similar systems and are excellent coders also prefer dynamic typing.

In my current startup we use typescript because the other team members like it. It does help replace comments when none are available, and it stops some bugs, but it also makes the codebase very hard to read and slows down dev.

A high quality test suite beats everything else hands down.
Show HN: Devu – Helping devs contribute to open source easily
by ogmethum | 2025-07-24 18:26:07+00:00
I’m a solo dev building Devu, a platform that matches developers with open source projects tailored to their tech stack and skill level. It also guides you step-by-step through contributing and provides learning pathways to fill knowledge gaps.

Contributing to open source can be overwhelming finding the right project, understanding issues, and submitting PRs is tough, especially for beginners. Devu aims to simplify that process.

I just launched the landing page: https://devu.dev

Would love any feedback or suggestions from this community.

Thanks!
by mritterhoff | 2025-07-24 18:26:07+00:00
I'm a fan of weightlifting, and agree that there are numerous health benefits to doing so, but I think the extra calorie burning is over-hyped. From what I've read you get 6-10 calories per pound of muscle per day, at rest. Not nothing, but for folks who aren't looking to body build I'm not sure it makes much of a difference. Or maybe over a long enough time span it does, I dunno.
by mushroomba | 2025-07-24 18:26:23+00:00
Sometimes, things that are fine become problems when done at scale.

Fishing, for example, is not terrible when it's you and your dad with a rod and bait. But we have the technology to create ships that dredge the ocean and exterminate all life. The scale is the problem.

To borrow a phrase, quantity has a quality all its own.
by nemothekid | 2025-07-24 18:26:45+00:00
>one where the WAL is dropped, and another showing whatever we have recovered. If I had such an option, I would almost always pick the latter

I can't imagine picking the latter unless you were treating sqlite like a filesystem of completely unrelated blobs.

If I run three transactions where:

1. John gives $100 to Sue.

2. Sue gives $100 to Mark.

3. Mark $100 money to Paul.

If sqlite, just erases transaction (2), then Mark materializes $100 from nowhere. The rest of your database is potentially completely corrupted. At that point your database is no longer consistent - I can't see how you would "almost always" prefer this.

If (2) is corrupt, then the restore stops at (1), and you are guaranteed consistency.
by Spivak | 2025-07-24 18:26:46+00:00
Well yeah, because variables in what you consider to be a strongly typed language are allocating the storage for those variables. When you say int x you're asking the compiler to give you an int shaped box. When you say x = 1 in Ruby all you're doing is saying is that in this scope the name x now refers to the box holding a 1. You can't actually store a string in the int box, you can only say that from now on the name x refers to the string box.
by bluefirebrand | 2025-07-24 18:26:49+00:00
If I personally do not benefit from productivity gains, then why should I be excited about them?

If productivity gains mean that either me or a coworker is laid off, and my boss makes more money, why should I care about the that?

Having a job is not a favor that people with money are doing for employees, it is an exchange of services for money

I provide a service. So do most people. Anything that gives the people with money a way to avoid paying for my service is bad for most of us
by jasonthorsness | 2025-07-24 18:27:31+00:00
Identifying a representative usage scenario to optimize towards and then implementing that scenario in a microbenchmark test driver are both massively difficult to get right, and a "failure" in this regard, as the author found, can be hard to detect before you sink a lot of time into it.

Even for seemingly trivial scenarios like searching an array, the contents and length of the array make a massive difference in results and how to optimize (as shown in the last section of this write-up where I tried to benchmark search algorithms correctly https://www.jasonthorsness.com/23).

I've not seen a perfect solution to this that isn't just "thinking carefully about the test setup" (profile-guided optimization/production profiles replayed for benchmarks seem like maybe it could be an alternative, but I haven't seen that used much).
by lelanthran | 2025-07-24 18:27:31+00:00
> What I don't understand is how do you square that with google still reporting growth in ads revenues.

Advertiser sees fewer hits from ad campaign, assumes it's their competitors, then raises their budget slightly to better compete in the ad auction.

Multiply that by about 300m businesses.

The signals that Google's customers (the advertisers) get is not "Your ad was ignored after we answer the user's query directly", it's "Your ad was ignored". The advertisers cannot tell why the ad was ignored.
by 3cats-in-a-coat | 2025-07-24 18:27:34+00:00
I see the general phenomenon of those people as an outlet for a set of social defects we have. Keep in mind that "immigrants bad" and so on cultural wars repertoire is always the go-to of populists when they want to point to an easy enemy to rile up the population.

It works because it's like short-circuiting. You have the easy to identify superficial traits, and so the current goes straight through, and shorts the system. Except it's social electricity in this case. My point is while we can blame the individual assholes in this, their generation itself is an inevitability in the right toxic environment. These populist explanations seek to address real concerns of people like bad work conditions, inflation and so on, but it invents an easy to digest (and entirely wrong) premise about why their lives are bad.

I wish I could say hating the assholes works, but that's just another short-circuiting of social electricity. Polarization, hate, enemies. It all just serves to divide and conquer us. Unity is strength, division is weaknesss.