HNHacker News
TopNewBestAskShowJobs

danbruc

9,770 karma · joined October 13, 2012

submissionscomments
danbruc··on A 10 year old Xeon is all you need
No RAM. Instead of having a general purpose multiplier that multiplies an input with a weight stored in RAM, just have a multiplier that hardcodes the weight. In some sense replace each weight with a specialized multiplier and wire them together with accumulators and activation functions in between. And some registers for pipelining. If one goes for four bit quantization, one could have sixteen optimized multipliers, one for each possible weight, and the one just selects and connects them according to the model weights and structure.

Example. If you have a neuron with 16 inputs each 8 bit wide and with a 4 bit weight per input, you will have 16 specialized multipliers each scaling its input by the corresponding weight and then the 16 scaled inputs feed into an adder tree and finally an activation function.

danbruc··on A 10 year old Xeon is all you need
Did some try to estimates what it would take to bake interference for a capable large language model into silicon so that one can pipeline inputs through it and produce outputs at one token per clock cycle?
danbruc··on Only 17% of all 64-bit Integers are products of two 32-bit integers
All the primes above 2^32 are out, but that accounts for only two point something percent.
danbruc··on Websites have a new way to spy on visitors: analyzing their SSD activity
Probably still does not work. Assume a request takes X ms and let us look at what you will observe depending on where within a tick period it arrives.

If it arrives anywhere from 0 ms to (20 - X) ms after a tick, it will complete before the next tick, so the measured duration will be between X ms and 20 ms. If it arrives later in the tick period, it will miss the next tick and have to wait an additional tick period, so the measured duration will be between 20 ms and (20 + X) ms.

If you make N repetitions, you would normally see a spike of density 1 at X. With the 20 ms tick wait, you will see a uniform distribution of density 1/20 between X and (20 + X).

You would have to perform each request and then return the result exactly 20 ms after it was received in order to mask the request duration. But that just creates a new target, your timers and queues to delay the response. Or making the load so high, that requests take more than 20 ms.

danbruc··on The four programming questions from my 1994 Microsoft internship interview (2023)
Your second one is somewhat in the right direction, I think. My guess would be that you split the circle into eights, that keeps the tangent slope between zero and one. Then you can go along one axis from 0 to sin(45°) times the radius and the value along the other axis will always either stay the same or change by one as the derivative is between zero and one. As you move along your primary axis, you generally keep the value along the secondary axis unchanged but you accumulate the error. When the error crosses 0.5, you move one pixel along the secondary axis and adjust the error accordingly. And of course you always draw eight mirrored and rotated pixels. In some way an adaptation of the Bresenham algorithm for drawing lines.
danbruc··on Poll: How often do you check "newest"?
Why is it »/newest« but »new«? Or is it »new« but »/newest«?
danbruc··on Can you see my post?
Checked new for the first time. [1]

[1] https://news.ycombinator.com/item?id=48322267

danbruc··on Tulip mania: when a single flower was worth more than a house (2025)
According to Copilot you can get one or two offspring per year from a tulip. So if you spent the price of a really nice house on one of those, it will take you quite some time to multiply the price down into reasonable territory. And even if you stay in unreasonable price territory, an average home, it is one thing to find a buyer for one tulip at that price, it is a very different thing to find a bunch of them. And you are still looking at three, four, five years of tulip growing to get the price down to a tenth of what you paid.
danbruc··on The Problem with the Ferrari Luce EV Offers a Lesson for Every Leader
What if they reject a customer not because of their wrong Ferrari color but their wrong skin color? I am not saying that they are the same thing, but there are probably acceptable and unacceptable reasons for rejecting a customer. And to me painting a Ferrari pink seems to be pretty far on the unacceptable side.
danbruc··on The Problem with the Ferrari Luce EV Offers a Lesson for Every Leader
That line is not that clear. Putting up a sign in your shop selling only to white people or not selling to Jews will get you in trouble in quite a few jurisdictions. On the other end of the spectrum you have things like a bouncer rejecting people at the door because they do not fit in. Also the difference between not allowing to paint your Ferrari blue and not allowing or making it hard to have your John Deere tractor serviced by yourself or a third party is not that obvious.
danbruc··on The Problem with the Ferrari Luce EV Offers a Lesson for Every Leader
Ignore that car, but what is this?

This is a brand that permanently banned Paris Hilton for painting her Ferrari pink, Kim Kardashian for modifying her 458, and Justin Bieber for wrapping his in neon blue.

Where does that fall on the line between your product, your rules and I bought the thing, I own it, I paint it blue? My gut reaction was that this should totally not be legal, neither telling people how to paint their car, nor telling them what [not] to do with it, or to which places they can take it, seriously? And also banning people from buying one to enforce this.

danbruc··on SimCity 3k in 4k (2025)
Also Wazzup? was later. And the dialog looks different in screenshots you find online but then again there have probably been quite a few releases. Still, I would say those images are not real or maybe from some modded version.
danbruc··on Raft Consensus with a Minority of Nodes
I would not call it trust because in this kind of consensus protocols, namely permissioned consensus protocols, you assume trust between participants, you assume you know the participants and they are not malicious. Otherwise you have to go down a road more like Bitcoin, where you do not know the participants and do not trust them.

What you need are rules that define a safe behavior in face of arbitrary communication breakdowns. You need a default behavior that guarantees that you are still doing the right thing no matter which other nodes you can no longer talk to. And safe behavior means two things. First, you need continuity, you must not lose any commits, so at least one node in the current round must have participated in the latest round. Second, you have to ensure that no two groups of nodes independently decide that they should continue to make commits, otherwise the state would diverge.

And from this comes the tensions, you want many nodes in the quorum to make continuity easy, you want few nodes in the quorum to tolerate many failures, you kind of want many nodes in the quorum to prevent multiple quorums.

danbruc··on Raft Consensus with a Minority of Nodes
Just to be clear, this is not a problem with this construction. As any two blocs overlap, there can be no split with a bloc on each side. But that is also the problem, a subset containing a bloc is relatively rare property. So while at first it seems that this is all great because you only need a few live nodes to potentially form a bloc, it turns out that it is just too rare for a random set of nodes to contain a bloc to buy you much if anything. In the worst case you could have 99 of 100 nodes live but not have a bloc in case you choose your blocs naively.

And for the merging, if you can do that, then why bother with consensus to begin with? The problem is that things that got committed are usually not just sitting in a database, they get read and acted upon. Webservice calls made, credit card transaction processed, parcel shipped, ... You can merge and undo commits in one database easily, controlling the ripple effects of those changes in other systems and the real world becomes impossible quickly.

danbruc··on Raft Consensus with a Minority of Nodes
The key correctness insight is this: any two majorities of nodes must overlap in at least one node. So between any two consecutive global state changes [...] at least one node participated in both. This single overlapping node carries forward the knowledge of what was previously committed, preventing conflicts and ensuring consistency.

There is another side to this, it must not be possible for two »majorities« to coexist, otherwise they could independently move on in case of a split cluster. This also rules out allowing consensus by majority in addition to majority by a bloc. In the seven node example, there could be a { 1, 2, 3 } and { 4, 5, 6, 7 } split, the first partition being a bloc and the second one being a majority but not containing a bloc.

danbruc··on That Methyl Methacrylate Tank
Also [synthetic] sapphire [1] is just aluminium oxide.

[1] https://en.wikipedia.org/wiki/Sapphire

danbruc··on A case against Boolean logic
The crucial point here is the difference between response and answer. Saying that the question is not applicable because you never started murdering people is a response but not an answer to the question. And that response answers an omitted binary question, is the actual question applicable in the current context, is the implied assumption - you started murdering people at some point in the past - satisfied?
danbruc··on A case against Boolean logic
Two question, have you ever beaten your wife, if so, did you stop? You can not stop something that never started. Alternatively, if you know from context that the wife has been beaten in the past, then yes or no are perfectly fine as the only options.

That question is obviously made as a trap because you can defend both answers. Yes, I am not beating her and actually never have, focusing on the current state. No, I did not stop because I never started, focusing on the state change. And the other party can do the same. No, so you did not stop beating your wife, so you are beating her. Yes, so you stopped beating your wife, then must have beaten here in the past.

The correct response is of course that the question is not applicable because it assumes a state - the wife has been beaten in the past - that does not match reality. And not applicable is not a third answer to the question, it is a statement about the question itself. So in contexts where non-applicable binary question might occur, you have to first determine whether the question is applicable before proceeding to answer the question.

danbruc··on A case against Boolean logic
Which is exactly what I wrote. [...] two dependent binary questions [...] The second one is meaningless if the first one is false.

Considered generally, though, if I ask a true/false question then read your answer from a single bit, it may be the case that there is no possible way for you to not lie to me.

Then you are not asking a binary question. If there is, for example, the possibility that I might not know the answer, then you are actually asking two dependent questions - do you know the answer and if so, what is the answer.

danbruc··on A case against Boolean logic
In one respect, boolean logic is popular because of bits. If we had ternary processors, ternary logic would be more popular.

Ternary truth values combines two dependent binary questions - do we know the truth value of X and what is the truth value of X. The second one is meaningless if the first one is false. You can merge the two binary values into one ternary unknown, true, and false but this does not really change much. Depending on the context one or the other might be easier to work with. Option types generalize this, there is always a binary choice between the value is known or unknown, and if it is known, then there will also be the actual value. A ternary logic value is just Maybe<Boolean>.

danbruc··on What Do Gödel's Incompleteness Theorems Mean?
It's also important to point out that if we cant prove a statement or its negation (one of which must be true) [...]

Is that true, could it not be neither, i.e. independent of the axioms? Or is this assuming completeness which rules out independent statements?

danbruc··on What Do Gödel's Incompleteness Theorems Mean?
That is interesting, I always thought that the incompleteness theorems says, there are theorems that are true or false in all models but cannot be proved to be so. But if it that is not the case and there always exist models where the theorem is true and false, that makes it sound to me, like the incompleteness theorem is not really about proving things. With that it sounds more like the inability of a sufficiently complex set of axioms to only admit isomorphic models, i.e. have all possible models agree on all expressible theorems. Makes the entire thing sound almost trivial, of course you can not prove what does not follow from the axioms.
danbruc··on How fast is N tokens per second really?
Because it is scrolling. If they would show one page of text while filling the next one in the background, the result would probably be somewhat like flicking through a book at one page per second. You still can not read one page per second but you would not be limited by your eyes being unable to recognizing the quickly scrolling text.

EDIT: As others have pointed out and I now did some reading on, it is an illusion that you can see all the text on a page at once, that is beyond the resolution limit of the human eye. To actually see all the words, you have to scan the page and that takes several seconds. From the numbers I have seen, it seems that the ultimate limit is probably below 30 tokens per second, no matter what, even using rapid serial visual presentation to cut out eye movements. Even 10 to 20 tokens per second is probably pushing it and unsustainable for many, if not most, people.

danbruc··on How fast is N tokens per second really?
They routinely reach 100-150 tokens per second and that feels too fast, to the point where it's hard to keep up with what it's actually doing.

There is no way you can follow what is going on even at 30 tokens per second. Maybe you can maintain a rough idea of what is going on for some tens of seconds but that is probably about it. Follow it in any detail, no chance. Reason about what you read, absolutely no chance.

800 tok/s — Cerebras-class, where the bottleneck is your eyeballs

I do not understand why they say this. I am not sure if it is even true. 800 tokens sounds like a page of text and I would assume you can look at one page per second without hitting any limitation of your eyes. Or is the resolution of the human not good enough to see an entire page at once and you have to scan it with the fovea? Scrolling text might of course hit the temporal resolution limit. But why does this even matter, your brain can not process anything close to the amount of information your eyes can take in.

danbruc··on Learnings from 100K lines of Rust with AI (2025)
Paxos is certainly non-trivial in the sense that tiny changes can break it, but in terms of functionality it is not that big. 50 KLOC just seems like a lot of code to me.
danbruc··on Polypad
Geogebra? [1]

[1] https://www.geogebra.org/

danbruc··on Iran starts Bitcoin-backed ship insurance for Hormuz strait
The US should be happy about this. Maybe. Iran seeking reparations is a reasonable demand, this gives the US a way to satisfy a demand without having to pay themselves - which certainly would not be popular, to say the least - making an exit easier. There is of course the risk of setting an undesirable precedent and it is not clear what the consequences of that would be.
danbruc··on The Aperiodic Table
There exists no translation that leaves the tiling of the entire plane unchanged. The same local pattern [1] will of course occur repeatedly, there are only so many different patterns of any given size, but if you look at large enough scales, any translated copy will eventually diverge.

Maybe someone can make a version of this - if it not already exists - where you can move a semitransparent copy of the tiling around, maybe with a score for the alignment achieved.

[1] I am not sure if this is true, but as we have to tile an infinite plane, I could imagine that any pattern of finite but arbitrary size will occur infinitely often.

danbruc··on Int a = 5; a = a++ + ++a; a =? (2011)
My expectation was none of the four presented. Evaluate left to right, a is five, post-increment, pre-increment, a is seven, 5 + 7 = 12. For right to left I would expect pre-increment, a is six, a is still six, post-increment, a is 7, overwrite with 6 + 6 = 12.
danbruc··on Starship V3
How much energy does it take to pump the heat from a primary loop at a temperature tolerated by the silicon to a secondary loop at 900 K? If we pick 300 K for simplicity, would we not need twice as much energy as we want to get rid of just to raise the temperature? 2 MW to raise 1 MW from 300 K to 900 K?
← PreviousPage 4 of 34Next →