> It’s called ud2 because the 0F FF variant was retroactively named ud0, and the 0F B9 variant was retroactively named ud1, leaving ud2 as the recommended undefined opcode.
It was a surprise for me as a reader. When I came to this sentence I assumed that 0f ff would become #1 and 0fb9 -- #2. But no, Intel counts from zero, so there is a third ud.
Yes, he says exactly that explicitly, that in his view we should look backwards.
> We (at least, most people) avoid inflicting unnecessary pain on animals because they are conscious beings that can feel pain.
I can agree that we say that we care because of consciousness, but still I'm not convinced, to me it looks very much like a rationalization.
Some people care about animals and to that end they claim that animals possess consciousness, because if they do everyone should care about animal welfare. These animal welfare activists do not start with some insight about animal consciousness, they start with caring about animals, and then they invent an argument that can persuade others. It is exactly as the author of the article says: caring comes first, declaration of consciousness comes second.
Honestly, I do not know what consciousness is, I'm in doubt, but playing a devil's advocate, it looks very much like a concept that was invented to prove that Homo Sapience is something special, more than a mere animal. To demarcate animals and humans, so when we denied animals any rights we had a great sounding excuse for that: "people possess consciousness, mere animals don't".
> Is this guy really, truly, seriously arguing that we first decide to care for an animal, and then because we care about it, we believe that it's conscious, able to feel pain and other emotions?
Exactly. Animal welfare activists care about animals' feelings and emotions and therefore they claim that animals possess consciousness. Meat eaters don't want to be inconvenienced by thoughts of suffering animals, so they claim that animals do not possess consciousness. Both claims have little to do with actual consciousness, it is just a political game. I care about my pets, and it doesn't matter whether they possess consciousness or not, I would care about them in any case. I don't need any great sounding excuses to care about them. But at the same time I don't need to talk others into caring about my pets, if I needed it, probably I'd start talking about animal consciousness too.
> This is so intuitively obvious that I am stunned that someone would argue the opposite.
That guy may be wrong, but if I'm allowed to give advice, I'd suggest you to stop and try to understand what he says. I'm really worried a bit about how consciousness debates unfold sometimes. They tend to slip into a political side and people mostly don't notice it. People saying "consciousness" while implying "human/animal rights" or obligations. It is just muddying the water.
If we want these debates to progress constructively, we have to be very careful with references to consciousness, maybe just forbid them completely in these debates. One can't measure consciousness, one can't even state clearly what consciousness is, but still they say "consciousness" to make their words sound more objective. And the worst part of it: it often works.
You're definitely right that it's important to be careful how we refer to terms like "consciousness", and your response actually illustrates part of the problem. Because people use the same term to mean two (or more) completely different things, and can therefore end up talking past each other.
For example: what I wrote was using the term "consciousness" as "being able to experience sensations", i.e. the most shallow definition of the term. Self-awareness and other "higher" mental abilities don't enter it. Almost nobody would deny that animals can experience sensations: pain and pleasure, hunger and satiation, and so on. And that shallow definition of consciousness, the one that almost nobody denies animals possess, is what I meant, and what I tried to use throughout my post. Whereas when you wrote "people possess consciousness, mere animals don't", that's a completely different meaning of the word. It's what I would call "self-awareness". And it is indeed what many (probably most) people argue differentiates animals from humans. But that's not what I was talking about. So even in a short response to a short comment, we were partly talking past each other because of attributing different meanings to the term.
It's therefore possible that I've misunderstood this guy's argument, in part. I had been assuming he meant "awareness", i.e. the ability to process sensations into qualia of experience. (Indeed, his paragraph that starts "We may balk at ..." does just that: refer to consciousness as being linked to the "feeling of a stove's heat, or the redness of its glow"). But then, earlier in his article, he says that consciousness is "a belief about what kinds of entities have beliefs, experiences, feelings, intentions and agency." Experiences are part of the shallow definition of "consciousness" (that I would call "awareness" for the sake of avoiding ambiguity), which almost nobody would dispute that animals have. But "beliefs" ranges all the way from "if I pull this lever, I will receive food" (which it can be proven that animals have) to "I believe that God exists" (which is the kind of thought that many, though not all, people would deny that animals are capable of). So his definition of "consciousness" appears to be muddy and not pinned down to a single concept.
But even if I've misunderstood what he means by consciousness, it doesn't change my argument that his logic is backwards, and that his "we should reason backwards" assertion is wrong, incorrect, just plain false. The only people for whom his asssertion "we believe they [that is, other living beings] are conscious when and because we care about them" is true are the kind of people who don't truly see other people as conscious beings but rather as mere tools for them to use and manipulate. Malignant narcissists or sociopaths, for example. But pretty much everyone who isn't some kind of sociopath reasons as follows: "this animal is conscious" (by which I mean able to experience pain) "therefore I shouldn't hurt it" (unless you have to, e.g., self-defense against an aggressive dog trying to bite you). Or "this person is a human being, self-aware like I am, therefore I shouldn't hurt their feelings" (again, the "unless you have to" exception comes up: it's not always possible to avoid hurting anyone's feelings in some complex social situations, even with the best of good intentions). Either way, whether you use the lower or higher definitions of "consciousness" (and I'm well aware that there are far more definitions than just these two, potentially muddying the waters even more), that reasoning is the correct one, and his "we should reason backwards" one is laughably wrong.
Trying to put the most generous construal I possibly can on his argument, it's possible that he meant "we treat other people as conscious beings because we care for them", i.e. when you interact with the cashier at the supermarket (assuming you're not using a self-checkout lane), you're probably not actually thinking about them as a human being, saying "Hi, how are you" and asking about their day. You're probably ignoring them, focused on paying for your groceries and going home. And they're probably doing the same to you, focused on scanning your groceries quickly to keep the line moving. From your perspective, the cashier could have been replaced by a grocery-scanning robot and your interactions (assuming the robot worked) would have been the same. If he had written that, it might have made some sense.
But what he actually wrote was that we "believe" that others are conscious when we exhibit care for them, and the natural conclusion that follows from that sentence is that when you don't greet the cashier at the supermarket and chat with them, and instead treat them no differently than you would a robot, you don't actually believe that they are a conscious being. Which is a laughably false conclusion that can be easily disproved, by simply asking people who have just finished having a cashier check out their groceries "Does that cashier have thoughts and emotions?". Pretty much everyone will say yes once they actually think about it. They believe the person has emotions. They don't always act on that belief — ask anyone who's worked in retail how many angry customers have yelled at them for something the company did, treating them like a thing rather than a human being who might not like to be yelled at — but even those angry customers, if someone were to stop them and say "Hey, that customer-service rep that you're yelling at. Are they a human being with thoughts and feelings of their own?", they would answer yes. (And some of them would then be shamed into modifying their behavior, because they have realized that their actions were not in line with their beliefs).
No. Even construing his argument in the kindest possible light, I can't find a way for it to be sensible. If he meant "we sometimes don't act like others are conscious", he should have written that. What he actually wrote is completely backwards from reality, and shows him not to be a serious thinker.
> The only people for whom his asssertion "we believe they [that is, other living beings] are conscious when and because we care about them" is true are the kind of people who don't truly see other people as conscious beings but rather as mere tools for them to use and manipulate. Malignant narcissists or sociopaths, for example.
I don't like arguments like this, because instead of attacking the core premise they attack defenders of the idea. There are different points of view, and picking one for a sake of an argument doesn't make a sociopath from anyone.
I agree, that he misses one thing: to claim that someone/something is conscious we need to believe that they have abilities to feel, maybe to reflect, maybe something else. The exact list of abilities to have is not known for me and different people would propose different lists, but still we can't claim rock to be consciousness just because we care about it.
Still I forgive him for it, because he is talking about LLMs, not about rocks. They have some abilities, and he claims that they are enough, what is missing is us caring for LLMs enough.
> If he meant "we sometimes don't act like others are conscious", he should have written that.
No, I don't think he meant to say this. I believe he talked about how society forms social conventions who is conscious and who is not. You see, I don't know the cashier you talk about, but I believe they possess consciousness. Why? Because they are human, and our social conventions say that every (non-sleeping) human is conscious. It is a simple rule of thumb at work, no deep philosophy or psychology involved. But were those social conventions came from? Who and how decided that every human is conscious? Why? But the story didn't just end at that decision, because now people debate about consciousness of animals and LLMs. And these debates make me (and the author of the article) think that "consciousness" in these debates is a buzzword like phlogiston was in thermodynamics before thermodynamics was invented.
> I don't like arguments like this, because instead of attacking the core premise they attack defenders of the idea. There are different points of view, and picking one for a sake of an argument doesn't make a sociopath from anyone.
I may have phrased my argument poorly, because it seems you misunderstood. I'm not saying that picking that point of view makes you a sociopath. I'm saying that the only people who actually believe that other people are not conscious are the sociopaths of society. Every non-sociopath looks at other people and thinks "those are conscious beings with thoughts and feelings of their own". (Well, not literally that; almost nobody except philosophers goes around thinking like that unprompted. But if you were to ask them, that's what they would answer).
I was not trying to claim that the defenders of that view are sociopaths. I was claiming that his assertion was false of just about everyone except sociopaths. I apologize for not phrasing it well enough to get my point across without misunderstanding.
I don't use TUI when I can avoid it. I happily use CLI apps, or GUI apps, but TUIs are not here, not there. They lose all the appeal of CLI apps, while getting some weird text interface instead of a polished GUI library and all the possibilities that you can get from rendering pixels, not characters.
When I moved from DOS to Linux, I chuck away TUI file managers and switched to pure CLI and never looked back. I could use GUI file manager, there you can really use mouse, without that jumpy-movements it has in TUI apps. But I wouldn't touch Midnight Commander or whatever.
I tried to run emacs in a terminal. Emacs' support of GUI toolkits is very cumbersome thing. But guess what forced me to abandon this experiment? Emacs is keyboard-driven, and terminals have issues with some keys, while GUI apps can deal with virtually anything.
> If we had a cross-platform usable GUI framework, and more consistency across OSes, the story would be different.
Try egui. I really like it. I'm not sure how much it is cross-platform though, hadn't tried it outside of Linux, but it is really nice. Or if you are an elm-purist then iced might be your choice. Iced lacks on widgets, it has just some basic ones, and if you need something to render a 2d-plot, then you are on your own.
People already tried to cancel others because they didn't agree with them. Eventually the most of people came to a conclusion that it is no good. I think at least that the most did just that. So I'm proposing another solution, just ignore what you don't like. No one is forcing you to read a blog that uses AI generated images or uses a wrong color for its background.
To cancel someone was really popular for a couple years starting just after covid. There's probably a better definition somewhere, but basically it is when a collective of like-minded people decide to publicly shame a person until they are too embarrassed to have an online presence, or even worse, until companies are pressured to not employ the person. It was like unofficial unions against someone existing. It stopped after enough people were cancelled that they were no longer powerless together. Then people who hate others had to evolve into different ways to be disrespectful because this method stopped working, which is why you don't see cancelling anymore
I would say that "cancelling" is mostly organized groups of people publicly shaming and harassing third parties to get to their victim. So like demanding that his employer fires him, demanding that any sponsors cancel their contracts, showing up with a mob outside their home to kill their family, demanding that they get removed from platforms like YouTube or Facebook.
Yes, destructuring is typically the only allowed way to get rid of linear/indestructible values. If the type has private fields, this is only possible in the same module, so commit(txn) and rollback(txn) would have to be implemented in the same module as the Transaction type.
I don't see why it may fail to integrate. Declare Pin as !Move and... thats all? I mean, there will be issues, edge-cases because it is just how these things happen, but still I don't see any fundamental issues with continuing to use Pin.
> the point of Pin is to wrap types that CAN move.
I would highlight that there are many cases where you CAN move an object safely until a certain operation requires the object to "stay put" in place.
Pin allows for that by tying the object to the place only when required. That's why Pin relates to both the object and the place.
Meanwhile, !Move types can't ever move. The object has to remain in the inital place it was constructed in. !Move requires in-place construction and emplacement to be ergonomic at all.
> I would highlight that there are many cases where you CAN move an object safely until a certain operation requires the object to "stay put" in place.
You could model this with a state machine enum where the "stay put" phase is a variant that accepts a !Move, like so:
Stupid question, can't this trivially be solved by having a movable constructor / builder type that then gets turned into a non-movable type when built?
Sure, thats one reason why IntoFuture and Future exist. Imo, in hindsight this is also main mistake in aysnc Rust: The whole async system should be build around IntoFuture rather than Future (async fn should return impl IntoFuture).
That way you could pass around IntoFutures without being affected by auto traits leaking. Only when you actually call .await() or .poll() would the immovable Future materialize.
You're right that this is an important issue. I wrote a post explaining this in some detail, so at the very least we avoid having the same problem with generator functions:
Oh yeah, I've read about all your blog post on this topic :)
To dump some ideas on you:
I think one missing piece might be that FnOnce() -> impl Future should implement IntoFuture. Async runtimes would then use IntoFuture in their APIs agressively.
I call this a "workload blueprint" at work. Its a closure/type that contains all the info to start the workload, but in a minimal form. In Rust terms this would be a buildprint that is ideally Send + Move + Forget + 'static, even if the actual work (and the backing struct of the Future) is !Send (e.g. It holds an Rc across await points).
Runtimes could use this for their advantage: There would be a global pool of "workload blueprint" that can be stolen by any executer thread, but once a !Send workload has started on one thread it can't be migrated to another.
I guess `!Move` is largely equivalent to `Unpin` for the purposes of `Pin`, so for example Pin's safe constructor `Pin::new()` can be re-expressed in terms of `!Move` instead of `Unpin`. Today you need unsafe code to pin a `!Unpin` (i.e. "movable") type.
But I also suspect there are important differences between `!Move` and `Unpin` that I'm not sure about.
This whole thread summarizes what's wrong with Pin: it's so confusing everyone in here got something wrong. (Just to address your mistake in particular Unpin is almost the opposite of !Move: it's the trait that represents things that can be un-pinned, that is: moved despite having been pinned. See https://doc.rust-lang.org/std/pin/index.html#unpin).
Like others said, Pin is incompatible with these semantics. Some people argue, though, that we need both (basically because pinned types can be moved before being pinned).
Hmm... The Reality changed itself when guys in Siberia changed the sensor? Some years ago I was playing with the idea that the Reality might invent new laws when people look for them, and doesn't bother with laws when no one observes them. It would be in the style of Copenhagen interpretation, though even with regard to it, the idea seems too weird to be true. But now we have an experimental evidence.
In any case it gives me ideas how to check the hypothesis. If the Reality has a limited horizon for planning for new laws, scientists can trick it into inventing new laws that eventually (after some more research and even more laws observed) would start contradicting to each other, and at that point the Reality would snap into a different set of rules.
If it is true, then the plan is like this: we need to wipe all the scientific knowledge from this world and start again, and trick the the Reality into devising better laws of nature. Ah, wait, we have no evidence that the Reality can abandon laws that were introduced already. Pity, the plan is brilliant, but how to check if the Reality can abandon its laws? If laws are local... we can do something like Stephenson described in his Anathem: establish maths doing independent research and comparing their results once in 1000 years.
> Some years ago I was playing with the idea that the Reality might invent new laws when people look for them, and doesn't bother with laws when no one observes them
There are several books from Greg Egan with this idea in mind: Permutation City and Distress. The latter one is exactly about this idea.
I love how the closer we get to “the edge of the Reality”, the more it sounds like the ramblings of someone that got their hands on some of that GOOD stuff
You might want to read Dan Simmons' Ilium and if you can stomach some weird post-9/11 shit, Olympos. One of the overarching themes is what you describe... or similar.
I believe it is a Lisp related story, not some general truth. I mean, if I had a hashtable that needs to be mutated asynchronously, I'd probably create a single writer to it. Some entity that takes ownership of a hashtable and you can talk with hashtable only through it.
But if you are writing Lisp, and that hashtable is a global, then good luck ensuring that no one except the designated entity talks with hashtable directly. In particular, you can't force the user at REPL prompt to not do it.
The mutability lament in the same ballpark. Dynamic nature of LISP makes it hard to ensure that some code paths can't change values they deal with. Statically typed languages do it all the time: just pass a const reference into a function and you can be sure that it wouldn't change the value, or anything referenced from it. In LISP the easiest way is to make a deep copy of a value. Other ways would probably need some changes introduced into lisp-machine itself. So you are choosing between two alternatives: either copy everything, or to believe other code to behave like values are immutable. The former is slow, the latter just doesn't work generally.
Take Rust for example: if I have a mutable HashMap that needs a concurrent access, I'd hide it. It would be accessible directly in one module only, and the module would export safe API that you can't use to achieve data race. Technically I can make this HashMap to be global, but then Rust would rebels and force me to wrap my HashTable into a Mutex. If I added REPL to the mix, then REPL would need to lock Mutex as any other thread.
Lisp just an ancient language that doesn't have these guardrails, so you need to think things through and ofc you will be overwhelmed in any real case by all these things, and then you write that you can't have concurrency, interactivity and mutability at the same time. To have them, you have to limit yourself in how you write your program, and while you can use LISP to limit yourself, you still need to do the decision and invest some work into it. It doesn't happen magically all by itself. For magic you'd better try rust, though its "magic" requires months of fighting with borrow checker until it succeeds at conditioning you into right practices.
> This resolved the most basic liar paradox, but not every diagonal attack, since not all functions on [0, 1] have fixed points. To make this work in general, we can for example allow only continuous functions on [0, 1] (which always have a fixed point by Brouwer’s fixed-point theorem). But that restriction comes at the cost of expressivity: "This sentence has truth score less than 0.5" is not a continuous function of the truth score of the sentence.
Ok, I get it. Either expressiveness or completeness, but the question arises: did mathematicians explore systems with limits on expressiveness? In a field of computer programming there is Rust with limited expressiveness that doesn't solve all the problems, but still makes things much simpler. How about a mathematics with limited expressiveness and some unsafe blocks here and there?
It is a temporary solution. Events of these kind tend to escalate up to a obligatory VPN for just using Internet, and beyond that to VPNs that resist blocking, like amnezia-wg, xray and suchlike.
You see, they block, then they notice that blocks do not work, they try harder. And still harder, till the situation comes to impasse, when to try harder means to shut off the Internet. It stops there, everyone is using some kind of DPI resistant VPN, paying more for internet access, and ISP spending more to block what politicians deem worthy of blocks. A pure waste of money. Though datacenters are happy, because they host a ton of VPNs.
It was a surprise for me as a reader. When I came to this sentence I assumed that 0f ff would become #1 and 0fb9 -- #2. But no, Intel counts from zero, so there is a third ud.
reply