I sometimes wonder if I'm being too stubborn on LLMs. I can acknowledge their utility for certain tasks, but I also look at their many negative externalities. I'm just not on-board with any of that. Also, I derive the most enjoyment from slowly figuring things out for myself and honing my own skills. Maybe an LLM would help me solve problems faster, but I'm much more interested in figuring out how to solve problems better. Of course, maybe it's just a pride thing at this point.
@dabeaz Like you, I've eschewed LLMs. They strike me as the automated equivalent of the lazy tutor, who shows you solutions to your homework problems without trying to improve your understanding.
So you get help with *this* problem, but all you've learned in terms of tackling the rest of the problems you'll encounter is dependency.
@dabeaz I'm in a similar place. However, I focus more on the externalities. I have judged others as "luddites", so I must constantly question if I'm being a luddite myself.
IMHO, if authors who wish their works not to be used for training LLMs had a magic wand to enforce their will, the LLMs would crumble. To me, that's enough to prevent me from using them.
(I also hope that the same authors would make exceptions for accessibility and similar uses- but that's complex.)
@dabeaz my biggest problem with LLM (especially "agentic" tool) is not even their buggy outputs or ethical concerns. Instead, it is that they make coding from something I enjoy into miserable experiences
@dabeaz I'm with you on that. These tools do the part I love (puzzles, design, problem solving) while leaving me with the parts I never wanted (admin, trying to get someone else to solve a problem instead of just doing it myself).
@dabeaz You guys must all be doing a *LOT* more interesting coding than I am. A lot of my coding is what I call "making license plates", meaning not very interesting, just pulling a handle. The prompt I'm currently running is "Can you convert all prints to logging.debug and set up logging to log to stderr in this project?"
Not every programming task is the Mona Lisa, the interesting part of many programs is 4-8 sentences of design, not hundreds of lines of code.
@dabeaz I totally get where you're coming from (I think) and I won't touch them either. Listening to two "vibe coders" on a train the other day, I am positively scared about where this will lead. Paraphrasing: "It's so awesome, I can produce all this code, and it mostly works. But when something doesn't and I look at it, there are all these functions it's calling, and I really don't know what those do. I mean I'd have to read A LOT to figure it out. Or I can change the prompt..."
@dabeaz I think with all do respect it's something related to pride and ego. We as a developers finally know that almost all we do is repetitive tasks that machines can do it under a second. We still can learn from them if we ask LLMs right questions. Learning is a pleasure that needs patient and consistency. Humans cannot enjoy something that earned fast.
@dabeaz
The wholesale theft of programmers copyrights deeply offends me as does the massive power consumption.
@phf I'm still trying to recover from watching someone speed-run YouTube videos trying to remember a command instead of reading a reference manual. That was before LLMs.
@jafo I don't really mind some of the more boring parts of coding although I could see where an LLM might help. I'm decently facile at doing tasks such as the one you describe with already existing features of emacs. So, there's definitely a high degree of inertia involved in getting me to change my flow I suppose.
@dabeaz I'm skeptical that the Emacs workflow you have can do a very good job at telling which "print" to convert to a "logging.debug", a "logging.info" and a "logging.error". The LLM this morning did. I get that you don't mind doing the change, but this is just the barest minimum of what it can do (what I happened to be doing), that meant I could stay at a high level design and let it do the typing.
@dabeaz Probably on the order of 100 across 6 files and 3 directories. Again, not proposing this is the ultimate use of an LLM, just what I was doing exactly at the moment I wrote that message.
Most of what I've been using it for the last few days has been "Can you understand this traceback, and figure out how to fix this fastapi-users code?" while I go off and work on another project.
@jafo How does it work? Are all of the changes made in one fell swoop? Do you review each change? Did you have to make any edits afterwards? Just curious.
I know for find/replace on something like this, I'd probably go one change at a time--having it prompt me and then I'd approve/disapprove/edit as I went along.
@dabeaz There are lots of ways to use it including editor integration, but the way I'm using it is through "Claude Code", which is a TUI. It gives me a prompt box and I type my prompt, then it shows some proposed changes (as a colorized diff) or actions (like "can I run `grep -R print .`?") with available responses: "Yes", "Yes to this and all other similar questions", and "No, and tell me to do something different."
@dabeaz For your use case of "one change at a time", the editor integration I've used in Cursor and Zed is more like that, Claude Code tends to show a chunk of changes at once, it seems like it kind of logically groups them somehow. Cursor, IIRC, gives you an "Accept/Decline" button on each change, and I think you can also accept all. I haven't used it in a while.