HNHacker News
TopNewBestAskShowJobs

agalunar

638 karma · joined July 28, 2018

submissionscomments
agalunar··on The Dangerous Ideas of “Longtermism” and “Existential Risk”
Something I've never quite understood is the (tacit) judgment that the end of the human race would be a bad thing, and that creating more people is inherently a good thing. And in fact, that it would maybe be acceptable to allow a large fraction of people to suffer if it ensured the propagation of humanity.

It makes sense why this is such a common judgment – individuals with the drive to reproduce and ensure the perpetuation of their progeny are more likely to have surviving progeny, so the population is dominated by this kind of individual.

But people talk about a species as if it was a living individual. It's not! a species can't feel hurt; its members can feel hurt. A species cannot prefer to continue to live (over the millenia); its members can prefer to live (for the duration of their own time on earth).

In some cases talking about a species is just metonymy, or shorthand, but in other cases I don't think that usage fits. For example, if "we must ensure the human race persists" is just shorthand, it's shorthand for "people should have children", and it's strange to insist that other persons have the personal desire to have children.

When someone is suffering, e.g. from depression, we can encourage them to continue to live for hope of a time where they aren't suffering (by helping them imagine a plausible, happier future), which to them might be worth enduring their present circumstances. In other words, we want to help them make a better-informed decision about their own life or death by reminding them that their current outlook is strongly colored by their current mental state.

But when it comes to a species, the future will not be experienced by any of its currently living members – it will be experienced by individuals who don't yet exist! And if they are never born, they've not been robbed of life or had a preference violated (because there's no one to rob or disregard).

The philosophy is much more complicated than I'm presenting, but I wanted to say something on the matter, if only because it's the sort of questioning I wish I saw more often.

agalunar··on Octopuses, crabs and lobsters recognised as sentient beings under UK law (2021)
This doesn't make sense to me; it sounds like you're suggesting I can't make my own moral judgment regarding your actions – that if you think what you're doing is okay, I have to think it's okay too.

Even if morality is only about answering the question, "how should I conduct myself", and not directly about how anyone else should conduct themselves, if one of my values is alleviating the suffering of others, I will need to recognize when other feeling things are being hurt. If you're the one causing the hurt, I suppose you could say that I'm not making a "moral judgment" about your actions (but rather some other kind of assessment), but regardless I will feel a duty to intervene.

agalunar··on Never trust a programmer who says they know C++
It depends on what you do! The reason I use this as my go-to example is that I came across the incorrect use of reinterpret_cast for this exact purpose in a previous job (which was firmware-adjacent).

edit: are you also expressing disagreement with the claim that few C++ programs are correct (and the implied claim that this is because many people's first-guess approaches are actually incorrect), or just saying that you think this is a bad example of the language being complex or misleading?

agalunar··on Never trust a programmer who says they know C++
Ah, yes, thank you for catching my omission!
agalunar··on Never trust a programmer who says they know C++
I've become somewhat convinced that no one has written a correct nontrivial C or C++ program since 1989.* My go-to example in C++ is examining a floating-point number as an integer:

• Cast a (pointer to a float) to a (pointer to a uint32_t). No; even if you make sure the size of a float on your target platform is 32 bits, this is undefined behavior.

• Make a union of a float and uint32_t. No; this works in C (since C99...?), but in C++ "it is undefined behavior to read from the member of the union that wasn't most recently written." [1]

• Use reinterpret_cast<uint32_t>. No; this violates the type aliasing rules, and the behavior is undefined. [2]

• Use reinterpret_cast<unsigned char> or reinterpret_cast<std::byte> and then reassemble these into a uint32_t. Yes! this works, although slightly laborious.

• Use std::memcpy. Yes! This is perhaps the "right" answer. The compiler should recognize the idiom and elide any actual copy.

I'm not even confident that I have that correct. It's an enormous language to fit into one's head; the language specification runs about 500 pages long and the standard library another 1500. [3]

[1] https://en.cppreference.com/w/cpp/language/union [2] https://en.cppreference.com/w/cpp/language/reinterpret_cast [3] https://github.com/cplusplus/draft/releases/tag/n4917

*This is a joke, but only barely so.

agalunar··on Vectorization: Introduction
From what I recall, in vector machines, operations are still done in parallel due to chaining; the difference is that you're doing e.g. add(v[1]) and mul(v[0]) in parallel, then add(v[2]) and mul(v[1]), and so on, rather than add(v[0]) and add(v[1]) in parallel, then mul(v[0]) and mul(v[1]), &c, which makes support for any vector length trivial.

(I'm sure you know this; this is just for the benefit of anyone else perusing the comment section.)

agalunar··on The halting problem is decidable on a set of asymptotic probability one (2006)
> the distinction about countable and constructively countable? The set of all programs is countable; the set of all terminating programs is a subset of it, but can’t constructively be proven to itself be countable—after all, that would imply a solution to the halting problem!

I thought this had to do with the difference between being computable and computably enumerable.

agalunar··on A PhD student's perspective on research in NLP in the era of LLMs
Like @bdsa points out with their example, the singular and plural are actually spelled differently, viz. "parent's house" and "parents' house", despite being pronounced the same way.

https://en.wikipedia.org/wiki/English_possessive#Nouns_and_n...

agalunar··on Cargo Cult AI
It's worth mentioning the truly ludicrous number of positions that chess networks are trained on, usually in the billions. Which is a bit interesting, because it suggests they're not as good at generalizing from examples as human grandmasters, who might see only millions. Perhaps this isn't surprising, since LLMs are this way with language, but given the structure of chess it's be reasonable to expect they wouldn't be quite as data hungry.

My personal take is that chess isn't all that structured, really. Yes, the ruleset, pieceset, and board are small, but the tactics of the game make it chaotic – seemingly trivial differences in board state can lead to dramatically different consequences.

agalunar··on Cargo Cult AI
Agreed, but I get the impression many people mistakenly believe that they are.
agalunar··on Cargo Cult AI
LLMs can be useful tools for conducting scientific research, in much the way that ordinary computer programs, or desk calculators, or slide rules are useful for conducting scientific research.

I meant that (insofar as I am aware) they are not useful as models that we can study to understand the nature of human intelligence.

agalunar··on Cargo Cult AI
I don't see how that at all counters point 1 or maybe even point 2.

Although LLMs are incredible feats of engineering, they're useless scientifically. The hallmark of a good scientific theory is that it not only explains what's true but that it fails to predict what's false.

There are constraints that all human languages obey [1]. Humans are incapable of learning languages that violate these constraints (i.e. we don't have hardware acceleration for them and are reduced to explicit symbolic manipulation). However, LLMs are just as capable of learning inhuman languages as human ones, so they tell us nothing about the nature of human intelligence, or at least our language capacity, which is our most distinguishing feature from every other species on earth.

[1] This isn't an example of such a constraint, but it's fun example of human limitation: center embedding! We seem to be incapable of doing it more than once or twice. "A man that a woman that a child that a bird that I heard saw knows loves" is perfectly grammatical but nearly impossible to understand without seeing it in print, whereas we can right embed all day long: "a man who is loved by a woman who is known by a child who was seen by a bird that I heard".

agalunar··on On the foolishness of “natural language programming” (1978)
Perhaps I'm hopelessly out of touch with pragmatism, but I think Dijkstra's comments would still be applicable even if we could trust GPT to write code correctly.

Getting some task done is only half the reason I write programs, even professionally; just as important (if not more important) to me is that I understand something precisely and completely. Writing a program is how I do that. That program is usually in the form of code.

Programs aren't just a means to an end, they're an end unto themselves. Or more correctly, a precise and complete understanding of a problem and its solution is a desirable even if it's unnecessary for the task immediately at hand.

Although I do mean that understanding is valuable in the way that art or music are valuable, or that education is valuable [1], I also mean it's more valuable than any particular program that's a product of it (and I think there are practical reasons why [2]).

[1] https://college.uchicago.edu/student-life/aims-education-add... or https://home.uchicago.edu/~aabbott/Papers/aims2.pdf

[2] https://pablo.rauzy.name/dev/naur1985programming.pdf

agalunar··on The Group Decode ROM: The 8086 processor's first step of instruction decoding
Color me surprised! That's very neat. Thanks for answering the question!
agalunar··on The Group Decode ROM: The 8086 processor's first step of instruction decoding
Why did the 8086 have the LOCK prefix? I think of it as being mostly useful in parallel contexts, e.g. lock cmpxchg for an atomic compare and swap. But the 8086 was a single core, single thread processor, and I'd be surprised if it were used in multiprocessor machines. Oh! did it have anything to do with the 8087?
agalunar··on When you lose the ability to write, you also lose some of your ability to think
I was trying to be careful by writing "treats people terribly" rather than "treats its people terribly", having imperialist nations in mind, or "treats all people terribly", having class-divided societies in mind.

I didn't realize that Adam Smith had argued on this point, though! Thank you for letting me know.

agalunar··on Intel One Mono Typeface
Ah, no, I phrased that in a rather callous way. I'm sorry – my apologies.

If you do decide to give it a try, I hope your editor makes it easy to configure (since they really run the gamut) and that you have another typeface to enjoy!

agalunar··on A whirlwind tour of the LLVM optimizer
I wasn't replying to the original comment. I was replying under the branch of the comment tree where jimsimmons wrote

> Let’s say I’m targeting x86 or PTX or some standard subo instruction set. I can do vanilla codegen but it is slow af

and

> Because I want to be self hosted

which struck me as something a hobbyist would say but someone working on a production-grade language and compiler would not.

agalunar··on Intel One Mono Typeface
Why don't you just disable them? Or does your editor not give you the option?
agalunar··on Intel One Mono Typeface
Yes! Someone has to make the glyphs and someone has to write the rules that say "unconditionally replace this sequence of glyphs with this glyph" or "in this context, replace this glyph with that one" and so on. The only thing the editor has to do is decide to use them.

They're usually grouped into features: standard ligatures (liga), discretionary ligatures (dlig), historical ligatures (hlig), contextual ligatures (clig), and so on. OpenType fonts can also provide stylistic sets, which might swap out some glyphs with alternatives.

agalunar··on A whirlwind tour of the LLVM optimizer
Education – learning to do something yourself – is a worthy end unto itself. Learning things is fun. Knowing how something works front-to-back feels good.

If you're making something that's meant to be load-bearing, something professional that will be used in production, then yeah, just use LLVM. But otherwise I think it's important people feel free to decide the goals and constraints of their hobbies and to pursue their preferences when it comes to their personal projects.

agalunar··on When you lose the ability to write, you also lose some of your ability to think
It's completely plausible that a nation with a wealth of natural resources but an economic system that treats people terribly could win a series of wars and establish its economic system as the dominant one in the world, and then use its power to maintain status quo.

A marketplace of ideas does not necessarily lead to the best outcomes, or even good outcomes.

Suppose the marketplace of ideas is an unregulated marketplace. Then the wealthy and powerful can use their wealth and power to determine the world that other people see, getting those people to mistakenly fight for things that help the wealthy and powerful.

But suppose it's kept a fair marketplace. Fairness is not natural – it's a human value that we have to actively maintain. But suppose we succeed. Even then, the marketplace may not select the best ideas, because people have emotional needs – like belonging to community – that will cause them to stubbornly reject good ideas. But we accept this because it's the only way for us to live with each other; if I want you to let me disagree with you, I have to let you disagree with me.* The price of intellectual freedom is very, very steep, even if it's worth it.

So I don't believe the fact that capitalism is dominant is good evidence that it's the best idea so far. In fact, I think we have little evidence of it at all.

* There are of course complications of the Popperian, paradox-of-tolerance sort, where we do have to fight to the death, so to speak. If someone repeatedly demonstrates an unwillingness to compromise or act fairly, they've left you the choice of letting yourself perish or eliminating them, which is a shitty situation to be in.

agalunar··on Are emergent abilities of large language models a mirage?
> Did Khaneman get into this in his book?

Not from what I recall; this was just my own observation. (Also, in retrospect I should have made it clearer that this exception was meant to be an example more than a particular claim... "under sufficient duress" almost makes it vacuously true.)

> Also, as for the point of contention, [...]

Yes! I've heard this reported as well, multiple times. I suppose it's sort of like using a pen and some scratch paper.

agalunar··on AI’s biggest risk is the corporations that control them
For many younger speakers, "you guys" is legitimately a second person plural pronoun (like "y'all") and implies nothing about the gender^1 of the referents, even if they consider singular "guy" to be a synonym for man.

Some older speakers use "guy" as a term of address, as in "Hey, guy", similar to how one might say "hey, bud" or even "hey you".

I don't think it will ever happen, but it's funny to imagine something similar happening and "bro(s)" coming to be a nongendered term.

Anyway, it's never crossed my mind before that "tech bros" singles out men; for me it evokes a stereotype of, yes, men, but it's really an attitude, value system, world view, or collection of behaviors that are being alluded to. (Of course, it's also only implication in the sense of "hinting at", because it's not contradictory to say "tech bros are the worst, and tech women are too").

[1] The... non-grammatical gender. English no longer has grammatical gender in any case, so it's unambiguous, but it feels weird to use "gender" in a linguistic context and not mean grammatical gender.

agalunar··on Avoiding hallucinations in LLM-powered applications
I call BS! I'd like to see the original paper, or better yet, a replication of the study.

Sure, on a cold day a hot coffee may be nice to hold and an iced coffee may be unpleasant. But on a hot day? The hot coffee burns your hands; the iced coffee is refreshing to hold. And this is even accepting the premise of the claim.

(Or perhaps it's reversed! Maybe we'd be more likely to think well of someone who asked us to do something mildly unpleasant, in a Franklin-esque way, and resent someone who offered us a pleasant moment only to take it away.)

(Or maybe the idea is mental association? I do, after all, think well of glassblowers and distrust ice cream vendors.)

Are we unknowingly influenced by little things, by the wrong things? Definitey, but I'd be surprised if this were an accurate example.

edit: my apologies for the bit of snark ^^'

I am tickled a bit by the story, though.

agalunar··on Are emergent abilities of large language models a mirage?
> Remember that, in this case, all I want to know is if they have that capability or not. Also, I don't care whether they can tell me how multiplication works or not, only if they can multiply two arbitrary numbers.

Right, but unless you know something about their process, the only way you can determine whether they have the ability to (correctly) multiply two arbitrary four-digit numbers is to have them demonstrate multiplying every combination of four-digit numbers. One can easily imagine a system that gets most answers correct but fails certain cases (e.g. only carrying between pairs of digits).

The reason why an inexhaustive test (using only several dozen examples) works to some degree with schoolchildren is because we know something about their method: the algorithm for multiplication they've been exposed to – that they're explicitly being taught – is an algorithm that we know to be correct.

That has a very large effect on the likelihood of different failure modes and the evidence required to have a particular degree of confidence.

Furthermore, for "system 2" activities (to borrow the term from Kahneman), we can reasonably expect a person's description of their process to match the process they actually performed. (There are exceptions: people will produced incorrect post hoc explanations for their behavior under sufficient duress when "I don't know" isn't perceived as an acceptable answer.) But I'm personally not aware of any reason to believe this about LLMs. I don't know why the network's actual process for performing multiplication should have anything to do with the text it produces after the fact when asked to explain its work.

So I'm not debating that a reasonable way to guess whether a person can (correctly) multiply two numbers is to "ask them to multiply two numbers and see if they get it right"; I'm disagreeing that this works with LLMs.

agalunar··on Are emergent abilities of large language models a mirage?
That's not at all how I would assess whether someone understood how to do multiplication – I would ask them to explain their process for performing multiplication or at least to show their work. Maybe I'm misunderstanding what you're saying, though?
agalunar··on That won't scale: Present cost vs. future value
> Good code should be easy to test effectively

Can you explain why this is? or maybe more specifically what you mean by this.

agalunar··on Ampersand (2015)
Same! nice to meet another "&c" user ^_^

I'm afraid I can't remember why I began writing "&c" rather than "etc", although I know I now prefer it (rather than it merely being a matter of habit) since it neatly separates the "et" and the "cetera" and looks cute to boot. Do you remember where you picked up the practice?

agalunar··on Switching to C over 'Modern' Programming Languages
^_^

Although I am tickled by the idea of pointer providence – that pointers are handed to us from on high, from the C gods.

← PreviousPage 3 of 7Next →