But frankly, I mostly use (greenfield, non-remembering) LLMs directly to counteract the enshittification of search brought on by attempts to use AI to remember things about me (and especially to sell me things).
This works well for me because (a) I'm usually using my desktop, and (b) I'm a touch-typist. I want to say that my search results have gotten back to where they were a decade or more ago by doing this, even though I often have to give a couple of prompts in order to get the LLM to provide me a useful link.
I guess I'm also pretty skeptical of the "automatically remember things about me" functionality. But I really like being able to say "hey make sure to remember this fact" and being able to ask about those things later.
For me the convenience of “hey remember this fact” is outweighed by a desire not to get stuck in a search or context bubble.
It might be nice to have better UI to control which bits of history get added to the context of a chat, but then just use a coding harness instead of web UI
Maybe. But I don't just use it for coding. For instance one thing I use it for is helping me track and evolve my workouts over time. It helps that it can remember the weight and number of reps I did the previous time. I could make an app for this, but it works well to do it purely within chat, with memory, and that's convenient. This is just an example, I use it this way for a number of things. I'm not going to use a coding harness for this kind of trivial use case!
My daughter is a pediatrician and just gave a talk on mental health problems (including suicides) brought on by the sort of personality that succumbs to this.
I find it interesting. For most of my life, I have gotten on well with (well-designed) machines. I'm the sort of guy who, when they bring me in to show me what's broken, it works in front of me.
Maybe I get on with well-designed machines better than people. Because people are never well-designed. So, when LLMs are working properly, I get along well with them, but when they're not, I'm unhappy. But I never confuse any of my machines for people.
Yeah to me it's just "oh what a nice interface for compressing information and accessing it upon request!", not at all "I'm talking to a person". But I dunno, maybe we're the weird ones.
That's a very... bleak perspective on your brother's motives. Sometimes you just want to get rid of an object that causes frustration. When that attitude is applied to humans, we usually call it a symptom of dehumanization.
> That's a very... bleak perspective on your brother's motives.
Well, it may have been an overstatement, but not by much. Look, I have anger issues, but I never get angry at things because they are never trying to hurt me, and nothing good can come of it. I could probably fix most remote control issues (e.g. bad battery contact), but not after it's been smashed.
I also tend to feel the same way about, e.g., a rabid dog or vermin. Get rid of them, but not in anger.
I'm not saying it's rational either way. But getting angry at things is, at least as far as I can tell, normal for most people, without any subconscious idea those things are people.
> So, when LLMs are working properly, I get along well with them, but when they're not, I'm unhappy.
So… you think yourself “different” while acting like everyone else does when something doesn’t go as planned (unhappiness/sadness/disappointment/whatever)?
The "machines like me" is not a humble brag. It's an observed phenomenon, not just by me.
The "I'm different in how I react to them" probably doesn't put me at odds with the entire population, but certainly puts me at odds with a lot of individuals I have witnessed.
If you read my other comments, you'd see me contrasting myself with people who get angry with machines. I don't do that.
For whatever reason, I reserve anger for sentient beings who I believe are trying to fuck with me. That has its own set of problems, but I never have the problem of destroying inanimate objects in anger.
> So… you think yourself “different”
Yes.
> while acting like everyone else does
That's the point. I know for a fact that not everybody acts like me, never mind having the same facility with machines as I do.
Honestly, I think he's pointing out that the LLM creators have intended the LLMs to anothromorphize themselves.
Case in point: Gemini just asked me "Where should we start?". When I asked it if that turn of phrase was used by the creators to invite the users to anthropomorphize the model, it's first paragraph was:
Yes, to a significant extent. While system designers rarely state their goal as "making users believe the AI is a living being," tech companies deliberately design conversational agents to evoke social and relational instincts.
In an attempt to go fast and beat benchmarks and other computers, CPUs attempt to speculatively execute code, and then later undo the results of the speculation if it turns out it was wrong. This causes all sorts of security issues (spectre, meltdown, and friends et al.) even when it's done relatively competently.
When it's done incompetently as on this ARM implementation, then you can't even run perfectly good and correct code, because the CPU will attempt speculative execution on a location that you never asked it to execute code at, and then bork itself when it realizes that can't possibly work.
Naturally, this is the sort of problem that requires tedious dissection of what exactly happened, and copious amounts of alcohol.
So in this specific case, if I understood correctly, here’s what should happen:
Interrupt(?) fires to trigger hypervisor, hypervisor figures out what it needs to do, jumps to that code, does its job, returns.
The “figured out what it needs to do” is the issue right? So what was actually happening was:
Same start… CPU predicts what hypervisor will do, speculatively loads instructions from mispredicted branch target, that wrong instruction reads memory(?) against the “no data prefetch” settings for that part of memory, CPU blows up/halts/whatever.
The fix is to mark the area the branch was mispredicted to in such a way that the CPU won’t prefetch instructions. Thus that won’t be run and prefetch data, thus no violation. CPU execution continues taking the correct branch and everything is fine.
No, that instruction does not read memory. That instruction is itself IN the inaccessible memory.
It does not really matter how execution ended up in the HV in the first place. The misprediction happens due to having a branch-to-register instruction.
Well, that was the whole issue. After marking the memory as not accessible via a data load, the CPU was still executing there and borking itself.
He had to also mark the memory as inaccessible for code loads.
Which, honestly is kinda stupid. Because nobody asked the processor to start executing there. It just took it upon itself to try to start executing there, later decided that was a bad thing, and then borked itself.
People talk about how terrible x86 is, but honestly, one of the reasons that x86 won for decades was because of making things that programmers did that might be suboptimal still work, even if a bit slowly (misaligned data accesses, for example). ARM does that now for that specific case, but didn't before 2002.
So there's an implementation tradeoff for whether you decide to spend transistors to reduce the number of sharp edges on the tool. Obviously ARM just doesn't give a shit about this particular sharp edge.
Speculative instruction fetches fetch code from "a location that you never asked it to execute code at" by design. If it already knew you asked it to execute code there, it wouldn't be speculative.
The Armv8/9-A architecture reference manual is clear that speculative instruction fetches are permitted in Device memory unless that memory is also marked NX. So if your hardware has side-effects from a certain address, but it maps it as Device non-NX memory, then your code is not "perfectly good and correct". Assigning correct memory attributes is one of the many things needed for correct code.
> Speculative instruction fetches fetch code from "a location that you never asked it to execute code at" by design. If it already knew you asked it to execute code there, it wouldn't be speculative.
Sure, but (a) the speculation is supposed to be transparent; and (b) ARM's response to a failure in speculative execution is arguably broken.
> The Armv8/9-A architecture reference manual
Sure, but before then marking memory as not readable would make it non-executable, and also mostly before then there was no or minimal speculation.
> then your code is not "perfectly good and correct".
Certainly it won't work on that machine. It might have worked perfectly well on prior machines, and we could argue all day about how reasonable ARM's implementation decisions were, but I will merely say that a documented flaw is, in fact, still a flaw.
Truly, indentation is the moveable feast. Even on ancient typewriters, you could adjust your tabs depending on what you are doing. And people who have dissimilar tastes in tabbage will certainly write stuff that doesn't appear that great in each others' editors.
> What business does a compiler have worrying about display width?
The business of the compiler is to insure that code that it deems acceptable is not ambiguous to different users. Since people can set their own tab spacing, display of tabs is, in an indentation-sensitive language, inherently ambiguous.
> What if I choose to program in a variable width font?
As long as the spacing of any prepended whitespace doesn't arbitrarily change depending on the phase of the moon, the compiler shouldn't (and Python doesn't) give a rat's ass about your display preferences.
The only important thing here is that the location of the left margin on every line is meaningful, both to the compiler, and to any viewers of your code.
> people who have dissimilar tastes in tabbage will certainly write stuff that doesn't appear that great in each others' editors.
Not for code, no. People will do that for spaces. For tabs it's a 1:1 correspondence with indentation level with any visual adjustments done by the editor.
Reading between the lines I suspect you are operating with the flawed idea of using tabs for alignment. One must never use tabs for alignment purposes because they very explicitly do not have a fixed width. (They have a consistent width within a document at any given point in time but it is entirely arbitrary and can change at any time.)
> insure that code that it deems acceptable is not ambiguous to different users ... display of tabs
A compiler never has any control over display. It must ensure no _semantic_ ambiguity. And indeed there isn't any to be found here. Even in python where you can introduce an arbitrary amount of whitespace when going up a level of indentation there is never any semantic ambiguity.
In short you are confused about the division of labor within the stack of abstractions.
> The only important thing here is that the location of the left margin on every line is meaningful, both to the compiler, and to any viewers of your code.
I'd dispute that the compiler needs to care about where your editor places the left margin. However rather than argue about bizarre hypothetical text editors that do unhinged things when displaying whitespace for no apparent reason, I'll instead observe that it seems to follow from what you said that you actually agree with me. As long as the prefix remains consistent across a given level of indentation then there's no cause for concern.
> I'll instead observe that it seems to follow from what you said that you actually agree with me. As long as the prefix remains consistent across a given level of indentation then there's no cause for concern.
No, I vehemently disagree with most of what you wrote. We certainly agree on basic things that tabs do not have a fixed width, and that a "compiler never has any control over (source code) display." (What a bizarre idea; whoever said it did?)
> I'd dispute that the compiler needs to care about where your editor places the left margin.
This isn't just about editors. I well remember green-bar.
> As long as the prefix remains consistent across a given level of indentation then there's no cause for concern.
No, if someone uses 8 character tabs, and then wants to space over half a tab for visual reasons, things completely break. We probably agree that's wrong, and that the answer is some variant of the answer to "Doc, it hurts when I do this" and I maintain the answer is to dispense with tabs completely.
Look the tabs-vs-spaces war is as old as the big-endian/little-endian war, and I am probably older than you. We'll probably never convince each other of any of this. Have a good day.
I could not successfully search for green-bar; I was turning up a brand of rebar made from fiberglass and various vegan bars and restaurants in different cities... but nothing related to coding or text editing. Do you have a link handy that would explain what the green-bar you're referring to is? Or, failing that, could I ask you for a brief (one or two sentences) explanation/summary? Would be appreciated. (UPDATE: Figured it out, see P.S. below)
BTW, if you've been reading my responses you'll see that I've landed in the same "get rid of tab characters" camp, because while they're nice in theory, they cause pain in practice.
EDIT to add this P.S.: Figured it out. I eventually came across https://elpa.gnu.org/packages/greenbar.html which mentioned the alternating white and green bands of color on old printer paper. I remember those, but I never heard them called "green-bar" which is why I couldn't place the term.
Sorry, didn't mean to send anybody on a wild goose chase. Glad you found a reference, and also somewhat glad that the reference says that the the term was "often" used -- maybe I'm not quite ready for the dementia ward yet?
> BTW, if you've been reading my responses you'll see that I've landed in the same "get rid of tab characters" camp, because while they're nice in theory, they cause pain in practice.
I had to go back and look. You obviously have more patience than I do for this sort of debate. :-)
I don't think people who fall down on the tab side of the debate have thought things through. Tabs are about alignment, of course, but why did we transport the typewriter alignment to printers? (Many printers had escape sequences that let you set the tab spacing.) Arguably, it was to save computation time, storage space, data transmission time, and even (for faster printers) to make your print job come out faster. People forget how precious all those were.
Today, a tab key on a keyboard is a perfectly cromulent method to get to your next alignment boundary, but there's a reason that every single usable code editor lets you program the tab key to emit a certain number of spaces.
I'm sure it was often used, but I spent a lot of my childhood and early adolescence in the non-English-speaking country where my father worked for many years. So "green-bar paper" is not the only apparently-commonly-used English term that I had to learn later in life, since when I was growing up, I heard English mostly from my parents and coworkers, and that's not a term that they happened to use a lot. So although it's my native tongue, I'm constantly finding holes in my vocabulary — usually 80's or 90's slang terms that my (extensive) reading habit couldn't teach me because most of the English-language books I had access to in the 80's or 90's were published in the 1970's or earlier.
In other words, don't take my not knowing a term as evidence that it wasn't commonly used; my childhood was unusual by the standards of most Americans. :-)
At a former workplace where most stuff was done in PHP, some colleagues used whitespace very liberally. Like, indentation was just a random amount of whitespace, every line slightly different. Sometimes 2 or more spaces between keywords, etc.
After that experience Python code is like eye-bleach to me.
I meant users of languages ( application programmers) as opposed to compiler programmers, not python programmers specifically, so I'm including devs that use other languages and see in python a tool that they would consume.
> What I found irritating in the post is the premise that what we put in front of kids should be judged by counts of attributions to career success.
For a start, that's effectively the premise it's sold on. And for another thing, if it's not contributing to the kind of thinking that would help with that job, what is it other than another esoteric game?
More like asking if anyone in the Tour de France has credited a win to early use ofone of those little Fred Flinstone-style kiddie cars where they use their feet on the ground for locomotion.
It seems like the same sort of category error that some people make regarding free speech.
Just as you can say whatever you want, but facebook/twitter/reddit/whoever is not required to give you a soapbox, you can download this software and make whatever changes you want, but nobody is required to give a shit about your proposed changes.
But are you happy handing over your notes documents to mass aggregators of information?
reply