Post

the crypto part of your thread really resonated with me because i am 99% "yes crypto is bad." the 1% is the trans folks i know who describe it as a good way to, for example, get black market hrt. but i also didn't come to the "it's bad" stance without trying to actually learn about + engage with it

yeah and my worry is that 1% of folks don't understand exactly how hard it is to preserve opsec while using it for the purpose they think it's good for, which is going to land them in jail for fincrimes. cash is a better option a vast majority of the time for even that use case.

People who actually get value out of it are going to reach for the tech. That's just how it is. My issue with crypto was that it wasn't just bad tech. But the way it is designed was primarily to enable graft and fraud. The positive cases can be solved with other tech that isn't inherently scammy.

The only generative case I’ve found useful is code completion. With local context it can save some typing. One problem with most generative uses of AI is people believe they can avoid *thinking*. They want to believe they can gain a skill with no effort, which is dangerous and wrong.

yeah, the de-skilling is pretty scary. I mean, if the abstraction is non-leaky, it's great, but I've been biased by many many years of abstractions promising to save work and then causing arcane failures after the fact.

A friend was a TA for an intro programming class that was heavy on the AI, and students didn’t understand why their code worked at the end, even though they had complete programs. Scary to think about a generation of programmers working in this way.

Okay so the real talk here is that people used to say this about assembly when it was new. “They don’t even understand the machine code they generate anymore. Look how bad and wasteful their programs are.” Yet, we continued.

I think it’s a mistake to compare this to C++/assembly. In those cases we got better abstractions, but people still had to understand what they were doing. Now we are saying “you can just keep typing prompts in until it does what you want”. IMO that is not a new abstraction.

something I’ve been nibbling on the edges of: there’s (at least some) work as imagined of programming that leads to a mental model of “write instructions, computer executes them” that, in modern practice, isn’t quite true. It’s already a bit like plinko as code descends through abstraction layers

not _really_ plinko, but from a code authoring standpoint, unless I am one of the most sophisticated and well versed in the field, imagining how my lines of code become processor instructions… is a lot, and not really my primary mode of thinking

yes, exactly! and even then: do you think about the way that your processor's cache coherency works, at all times? no! or how the electricity makes the hardware function to do those jobs? not at all. it's always been a fuzzy understanding

do you consider code not a language? that is, what is the distinction you're drawing between english and javascript (or whatever)? we use the same tools to talk about both: grammar, structure, semantics...

Code is not a language in the same way English is a language. One is for making transistors flip in the right order, another is for people to express their hopes, dreams, ideas, longings. I think it’s a mistake to say an LLM is “translating” from English to python.

gotcha. i feel very differently, personally. but i also know that i tend to have a broader view of compilers than a lot of people (I think 'transpiler' is nonsense, for example)

coming from a language/psych background, something that I think underpins this is, while English and Python can both be languages, the way we use English is different. we are not just “compiling” or even decoding English, we negotiate, a lot, to develop and refine models of meaning

we do a little of this with programming languages, developing mental models of how a compiler works, for example, but it’s not as fast, iterative, recursive, or as multi-faceted as human-to-human language, because each individual is perceiving and interpreting differently, from moment to moment

A lot of programmers make a categorical error here, because LLMs work to some extent to generate code they extrapolate it should work just as well for natural language. But human-computer communication is literally trivial compared to human-human communication.

0 reposts4 likes

The job of a programming language is to allow humans to easily tell computers precisely what to do. If you need a translation layer from your thoughts to that language it’s a sign that either the programming language is not doing its job or that your brain is broken. :)

Because you can still formulate your thoughts fine, let’s rule out that something is wrong with you. Hence, there must be something wrong with the programming language or environment. And unfortunately there’s so much wrong with programming these days; mainly it is needless complexity.

I feel like a big part of the value created by software development is in the mental models of problems and solutions. Code is a lossy representation of these mental models. Compilers transform these representations across levels of abstractions to turn them into something a machine can perform.

In that sense I can use an LLM to transform a natural language representation of my mental model of a solution into code. But I can also use it to generate a representation of a solution to a problem without having a mental model of the solution at all.

fwiw i'm not sure 'should work just as well' is a thing i'd even say, more of a 'is a thing that can work, even if via a different mechanism.' and i'm also not entirely sure it's that different, reproducible builds are hard because we have a lot of nondeterminism in there already!

I think my point is that many programmers specifically think of themselves as super smart and rational and forget that they’re human beings who are just as easily fooled (or perhaps even easier because of this hubris?) by shiny things (e.g. a machine pretending to be human) as everyone else is.