News for hackers. Stuff that matters.
Re:Things we learned about LLMs in 2024 by dartos on Tuesday December 31, 2024 @04:14PM (#42561874)
> There’s a flipside to this too: a lot of better informed people have sworn off LLMs entirely because they can’t see how anyone could benefit from a tool with so many flaws. The key skill in getting the most out of LLMs is learning to work with tech that is both inherently unreliable and incredibly powerful at the same time. This is a decidedly non-obvious skill to acquire!

I wish the author qualified this more. How does one develop that skill?

What makes LLMs so powerful on a day to day basis without a large RAG system around it?

Personally, I try LLMs every now and then, but haven’t seen any indication of their usefulness for my day to day outside of being a smarter auto complete.

Re:Things we learned about LLMs in 2024 by lumost on Tuesday December 31, 2024 @04:24PM (#42561937)
When I started my career in 2010, google was a semi-serious skill. All of the little things that we know how to do now such as ignoring certain sites, lingering on others, and iteratively refining our search queries were not universally known at the time. Experienced engineers often relied on encyclopedic knowledge of their environment or by "reading the manual".

In my experience, LLM tools are the same, you ask for something basic initially and then iteratively refine the query either via dialog or a new prompt until you get what you are looking for or hit the end of the LLM's capability. Knowing when you've reached the latter is critically important.

Re:Things we learned about LLMs in 2024 by o11c on Tuesday December 31, 2024 @04:57PM (#42562170)
The problems with that skill is that:

* Most existing LLM interfaces are very bad at editing history, instead focusing entirely on appending to history. You can sort of ignore this for one-shot, and this can be properly fixed with additional custom tools, but ...

* By the time you refine your input enough to patch over all the errors in the LLM's output for your sensible input, you're bigger than the LLM can actually handle (much smaller than the alleged context window), so it starts randomly ignoring significant chunks of what you wrote (unlike context-window problems, the ignored parts can be anywhere in the input).

Re:Things we learned about LLMs in 2024 by dinosaurdynasty on Tuesday December 31, 2024 @07:11PM (#42562866)
ChatGPT basically lets you edit any of your messages at any point in the conversation, which I definitely use (e.g., if the conversation has gotten into a bad basin, the LLM misunderstood me, etc).

Also ChatGPT has a pretty big context window. Gemini supposedly has the biggest useful context window (~millions of tokens), though I don't have personal experience.

Re:Things we learned about LLMs in 2024 by simonw on Tuesday December 31, 2024 @07:13PM (#42562873)
I tend to avoid editing previous messages because it breaks my mental model of the sequence that got me to the current state. That's more of a bias from my goal to do "research" into how these models work though - I'm always trying to maintain the cleanest possible record of what I did so I can learn from the transcript later.
Re:Things we learned about LLMs in 2024 by simonw on Tuesday December 31, 2024 @05:05PM (#42562214)
Yeah, a key thing to understand about LLMs is that managing the context is everything. You need to know when to wipe the slate by starting a new chat session and then pasting across a subset of the previous conversation.

A lot of my most complex LLM interactions take place across multiple sessions - and in some cases I'll even move the project from Claude 3.5 Sonnet to OpenAI o1 (or vice versa) to help get out of a rut.

It's infuriatingly difficult to explain why I decide to do that though!

Re:Things we learned about LLMs in 2024 by dartos on Tuesday December 31, 2024 @05:41PM (#42562394)
What kinds of things do you with these LLMs?

I feel like I’m good at understanding context. I’ve been working in AI startups over the last 2 years. Currently at an AI search startup.

Managing context for info retrieval is the name of the game.

But for my personal use as a developer, they’ve caused me much headache.

Answers that are subtly wrong in such a way that it took me a week to realize my initial assumption based on the LLM response was totally bunk.

This happened twice. With the yjs library, it gave me half incorrect information that led me to misimplementing the sync protocol. Granted it’s a fairly new library.

And again with the web history api. It said that the history stack only exists until a page reload. The examples it gave me ran as it described, but that isn’t how the history api works.

I lost a week of time because of that assumption.

I’ve been hesitant to dive back in since then. I ask questions every now and again, but I jump off much faster now if I even think it may be wrong.

Re:Things we learned about LLMs in 2024 by gavindean90 on Tuesday December 31, 2024 @08:16PM (#42563175)
There is no substitute for cold hard facts. LLMs do not provide that unless it’s literally the easiest thing for them to do and even then not always.

In the case you were in I would go out of my way to feed the docs to the LLM and then use the LLM to interrogate the docs and then verify the understanding I got from the LLM with a personal reading of the docs that were relevant.

You might think it takes just as long of not longer to do it my way rather than just reading the docs myself. Sometimes it can. But as you get good at the workflow you find that the time sien finding the relevant docs goes down and you get an instant plausible interpretation of the docs added too. You can then very quickly produce application code right away and then docs of the code you write.

Re:Things we learned about LLMs in 2024 by simonw on Tuesday December 31, 2024 @09:00PM (#42563392)
Here are a bunch of things I use LLMs for relating to code.

- Running micro-benchmarks (using Python in Code Interpreter) - if I have a question about which of two approaches is faster I often use this pattern: https://simonwillison.net/2023/Apr/12/code-interpreter/

- Building small ad-hoc one-off tools. Many of the examples in https://simonwillison.net/2024/Oct/21/claude-artifacts/ fit that bill, and I have a bunch more in my tools tag here: https://simonwillison.net/tags/tools/ - Geoffrey Litt wrote a great piece the other day about custom developer tools which matches how I think about this: https://www.geoffreylitt.com/2024/12/22/making-programming-m...

- Building front-end prototypes - I use Claude Artifacts for this all the time, if I have an idea for a UI I'll get Claude to spin up an almost instant demo so I can interact with it and see if it feels right. I'll often copy the code out and use it as the starting point for my production feature.

- DSLs like SQL, Bash scripts, jq, AppleScript, grep - I use these WAY more than I used to because 9/10 times Claude gives me exactly what I needed from a single prompt. I built a CLI tool for prompt-driven jq programs recently: https://simonwillison.net/2024/Oct/27/llm-jq/

- Ad-hoc sidequests. This is a pretty broad category, but it's effectively little coding projects which I shouldn't actually be working on at all but I'll let myself get distracted if an LLM can get me there in a few minutes: https://simonwillison.net/2024/Mar/22/claude-and-chatgpt-cas...

- Writing C extensions for SQLite while I'm walking my dog on the beach. I am not a C programmer but I find it extremely entertaining that ChatGPT Code Interpreter, prompted from my phone, can write, compile and test C extension for SQLite for me: https://simonwillison.net/2024/Mar/23/building-c-extensions-...

- That's actually a good example of a general pattern: I use this stuff for exploratory prototyping outside of my usual (Python+JavaScript) stack all the time. Usually this leads nowhere, but occasionally it might turn into a real project (like this AppleScript example: https://til.simonwillison.net/gpt3/chatgpt-applescript )

- Actually writing code. Here's a Python/Django app I wrote almost entirely with Claude: https://simonwillison.net/2024/Aug/8/django-http-debug/ - again, this was something of a side-project - not something worth spending a full day on but worthwhile if I could get it done in a couple of hours.

- Mucking around with APIs. Having a web UI for exploring an API is really useful, and Claude can often knock those out from a single prompt. https://simonwillison.net/2024/Dec/17/openai-webrtc/ is a good example of that.

There's a TON more, but this probably represents the majority of my usage.

Re:Things we learned about LLMs in 2024 by dartos on Tuesday December 31, 2024 @09:32PM (#42563514)
Thank you!

I’ll read through these and try again in the new year.

Re:Things we learned about LLMs in 2024 by Tostino on Tuesday December 31, 2024 @09:17PM (#42563469)
Not OP, but I've just gotten really used to verifying implementation details. Yup, those subtle ones really suck. It's pretty much just up to intuition if something in the response (or your followups) rings the `not quite right` bell for you.
Re:Things we learned about LLMs in 2024 by grimgrin on Tuesday December 31, 2024 @05:35PM (#42562366)
I bought in early to typingmind, a great web based frontend. Good for editing context, and switching from say gemini to claude. This is a very normal flow for me, and whatever tool you use should enable this

also nice to interact with an LLM in vim, as the context is the buffer

obviously simon’s llm tool rules. I’ve wrapped it for vim

Re:Things we learned about LLMs in 2024 by cruffle_duffle on Tuesday December 31, 2024 @09:45PM (#42563567)
> Most existing LLM interfaces are very bad at editing history, instead focusing entirely on appending to history. You can sort of ignore this for one-shot, and this can be properly fixed with additional custom tools, but ...

Somebody somewhere needs to provide a threaded interface to an LLM.

Re:Things we learned about LLMs in 2024 by danielbln on Wednesday January 01, 2025 @09:03AM (#42566075)
I really like Zed's (editor) implementation. The context window is just editable text, like any other. You can freely change anything and send the whole thing back into the LLM. I find that a much more useful interface than mucking around and editing chat bubbles.
Re:Things we learned about LLMs in 2024 by layer8 on Tuesday December 31, 2024 @06:44PM (#42562726)
One difference is that skillful googling still only involved typing a few keywords or a short phrase and some syntax, and then knowing how to skim the results and iterate, and how to operate your browser efficiently. With LLMs, you have to type a lot more (and/or use voice input), and often also read more, it’s also not stateless/repeatable like following a web link, and most output looks the same (as opposed to the variations in web sites). I pride(d) myself on my Google foo, it was fun, but I find using LLMs to be quite exhausting in comparison.
Re:Things we learned about LLMs in 2024 by j_bum on Tuesday December 31, 2024 @10:26PM (#42563722)
I also find LLMs to be more exhausting than Googling, but for me they’ve been ultimately more enriching and efficient.

Specifically, I’ve been using Kagi Assistant over the past 1.5 months for serious and lengthy searches, and I can’t imagine going back to traditional search.

I’m currently sold on this model of LLM assisted search (where explicit links are provided) over the old Google foo skills I developed during grad school.

Example search topics include deep dives and guidance for my first NAS build, finding new bioinformatics methods, and other random biomedical info.

Re:Things we learned about LLMs in 2024 by Obscurity4340 on Tuesday December 31, 2024 @09:43PM (#42563558)
Googlefu is how its usually called. It would be fantastic if there was a general course to teach it
Re:Things we learned about LLMs in 2024 by CRConrad on Monday January 06, 2025 @11:23AM (#42611873)
Not "would be", but "would have been", past tense: Once upon a time it may have been valuable, but since Google deliberately ruined its search engine, it's of no use any more.
Re:Things we learned about LLMs in 2024 by perrygeo on Tuesday December 31, 2024 @04:28PM (#42561965)
There's a similar dynamic in building reliable distributed systems on top of an unreliable network. The parts are prone to failure but the system can keep on working.

The tricky problem with LLMs is identifying failures - if you're asking the question, it's implied that you don't have enough context to assess whether it's a hallucination or a good recommendation! One approach is to build ensembles of agents that can check each other's work, but that's a resource-intensive solution.

[dead]
Re:Things we learned about LLMs in 2024 by simonw on Tuesday December 31, 2024 @04:48PM (#42562113)
I hadn't heard of T2Tile. The intro video https://www.youtube.com/watch?v=jreRFxN6wuM is from 5 years ago so it predates even GPT-3.

Do you know if any of the ideas from that project have crossed over into LLM world yet?

Re:Things we learned about LLMs in 2024 by duck on Tuesday December 31, 2024 @04:49PM (#42562123)
Do you know who Simon is?
Re:Things we learned about LLMs in 2024 by simonw on Tuesday December 31, 2024 @04:44PM (#42562086)
One of the things I find most frustrating about LLMs is how resistant they are to teaching other people how to use them!

I'd love to figure this out. I've written more about them than most people at this point, and my goal has always been to help people learn what they can and cannot do - but distilling that down to a concise set of lessons continues to defeat me.

The only way to really get to grips with them is to use them, a lot. You need to try things that fail, and other things that work, and build up an intuition about their strengths and weaknesses.

The problem with intuition is it's really hard to download that into someone else's head.

I share a ton of chat conversations to show how I use them - https://simonwillison.net/tags/tools/ and https://simonwillison.net/tags/ai-assisted-programming/ have a bunch of links to my exported Claude transcripts.

Re:Things we learned about LLMs in 2024 by bjt on Tuesday December 31, 2024 @05:29PM (#42562333)
Thank you for doing this work, though.

My first stab at trying ChatGPT last year was asking it to write some Rust code to do audio processing. It was not a happy experience. I stepped back and didn't play with LLMs at all for a while after that. Reading your posts has helped me keep tabs on the state of the art and decide to jump back in (though with different/easier problems this time).

Re:Things we learned about LLMs in 2024 by djhn on Wednesday January 01, 2025 @02:55AM (#42564617)
To be fair I think that is a hard task even for a human expert, in the sense that there isn’t much prior art.
Re:Things we learned about LLMs in 2024 by swalsh on Tuesday December 31, 2024 @04:53PM (#42562147)
It's amazing this is still an opinion in 2025. I now ask devs how they use AI as part of their workflows when I interview. It's a standard skill I expect my guys to have.
Re:Things we learned about LLMs in 2024 by sramam on Tuesday December 31, 2024 @06:26PM (#42562636)
I concur that asking devs how they use AI is a great idea.

Recently, I shared a code base with a junior dev and she was surprised with the speed and sophistication of the code. The LLM did 80+% of the "coding".

What was telling was as she was grokking the code (for helping the ~20%), she was surprised at the quality of the code - her use of the LLM did not yield code of similar quality.

I find that the more domain awareness one brings to the table, the better the output is. Basically the clearer one's vision of the end-state, the better the output.

One other positive side-effect of using "LLMs as a junior-dev" for me has been that my ambitions are greater. I want it all - better code, more sophisticated capabilities even for relatively not-important projects, documentation, tests, debug-ability. And once the basic structure is in place, many a time it is trivial to get the rest.

It's never 100%, but even with 80+%, I am faster than ever before, deliver better quality code, and can switch domains multiple times a week and never feel drained.

Sharing best AI hacks within a team will have the same effect as code-reviews do in ensuring consistency. Perhaps an "LLM chat review", especially when something particularly novel was accomplished!

Re:Things we learned about LLMs in 2024 by layer8 on Tuesday December 31, 2024 @06:48PM (#42562746)
Using cloud-based AI is a no-go where I work, for IP and contractual reasons. And on-premises AI is not as capable and more difficult to integrate.
Re:Things we learned about LLMs in 2024 by simonw on Tuesday December 31, 2024 @06:49PM (#42562759)
Have you tried the latest open weight models? They're SO MUCH better today than they were even six months ago.

If I was in an environment that didn't allow hosted API models I'd absolutely be looking into the various Llama 3 models or Qwen2.5-Coder-32B.

Re:Things we learned about LLMs in 2024 by layer8 on Tuesday December 31, 2024 @07:20PM (#42562913)
What do you use so that you can throw in a set of documents and/or a nontrivial code base into an LLM workspace and ask questions about it etc.? What the cloud-based services provide goes way beyond a simple chat interface or mere code completion (as you know, of course).
Re:Things we learned about LLMs in 2024 by simonw on Tuesday December 31, 2024 @07:35PM (#42562983)
I use my https://github.com/simonw/files-to-prompt tool like this:

  files-to-prompt . -e py -e md -c | pbcopy
Now I have all the Python and Markdown files from the current project on my clipboard, in Claude's recommended XML-like format (which I find works well with other models too).

Then I paste that into the Claude web interface or Google's AI Studio if it's too long for Claude and ask questions there.

Sometimes I'll pipe it straight into my own LLM CLI tool and ask questions that way:

  files-to-prompt . -e py -e md -c | \
    llm -m gemini-2.0-flash-exp 'which files handle JWT verification?'
I can later start a chat session on top of the accumulated context like this:

  llm chat -c
(The -c means "continue most recent conversation in the chat").
Re:Things we learned about LLMs in 2024 by layer8 on Tuesday December 31, 2024 @07:58PM (#42563089)
Thanks. Google AI Studio isn’t local, I think, is it? I’ll have to test this, but our project sizes and specification documents are likely to run into size limitations for local models (or for the clipboard at the very least ;)). And what I’d be most interested in are big-picture questions and global analyses.
Re:Things we learned about LLMs in 2024 by simonw on Tuesday December 31, 2024 @07:59PM (#42563096)
No, it's not. I've not seen any local models that can handle 1m+ tokens.

I haven't actually done many experiments with long context local models - I tend to hit the hosted API models for that kind of thing.

Re:Things we learned about LLMs in 2024 by 3eb7988a1663 on Tuesday December 31, 2024 @07:20PM (#42562911)
Legal does not even want us running offline models for reasons. I assume that comes down to not knowing what offline-only means, but such is life.
Re:Things we learned about LLMs in 2024 by simonw on Tuesday December 31, 2024 @07:32PM (#42562967)
Maybe they're concerned that code written with AI assistance can't be copyrighted? I've seen that idea floated in a few places.
Re:Things we learned about LLMs in 2024 by dartos on Tuesday December 31, 2024 @05:44PM (#42562412)
I feel bad for your team.

Let people work how they want. I wouldn’t not hire someone on the basis of them not using a language server.

The creator of the Odin language famously doesn’t use one. He’s says that he, specifically, is faster without one.

Re:Things we learned about LLMs in 2024 by theptip on Tuesday December 31, 2024 @06:10PM (#42562563)
No, it’s reasonable. If your team uses Git then it’s a valid question to establish if someone has only worked with Perforce.

They didn’t say how heavily they weight the question.

(All that said I expect that, soon, experience with the appropriate LLM tooling will be as important as having experience with the language your system is implemented in.)

Re:Things we learned about LLMs in 2024 by dartos on Tuesday December 31, 2024 @06:49PM (#42562757)
Right, but using git is a team wide thing.

I can’t use perforce while my company is on git.

But if I do or do not use an LLM to assist me while coding, my team is unaffected.

If someone liked jetbrains, but your team used neovim, would you force them to use neovim?

Re:Things we learned about LLMs in 2024 by Kwpolska on Wednesday January 01, 2025 @03:42AM (#42564775)
Editors may also be a team decision in some places. Some teams are using features unique to one IDE, for example.
Re:Things we learned about LLMs in 2024 by chikere232 on Wednesday January 01, 2025 @04:30AM (#42564976)
it can be a team decision, but it's a bad one
Re:Things we learned about LLMs in 2024 by dartos on Wednesday January 01, 2025 @09:41AM (#42566252)
Then that tooling is required, like visual studio is a common one I know about in windows land.

Though nobody should care if I edited my text files with neovim as long as I still used the same toolchain as everyone else.

Re:Things we learned about LLMs in 2024 by paxys on Tuesday December 31, 2024 @07:17PM (#42562896)
You hire people based on their fundamental knowledge and the ability to learn, not skills in arbitrary tools and frameworks which come and go every other day. If someone has used Perforce they will be able to get perfectly comfortable with Git by the end of their first week. So not knowing Git is an idiotic reason to reject a skilled developer. Same with programming languages, and just about every other aspect of software development.
Re:Things we learned about LLMs in 2024 by swalsh on Tuesday December 31, 2024 @11:51PM (#42564040)
I don't really test any specific tools or frameworks, what i'm using has changed twice just in the last year. More so, I just want to hear that the candidate has some knowledge of what the current models can do well, what they can't do, and how they're integrating it. Whether you're copying pasting code or using something like cursor is not what i'm concerned about.
Re:Things we learned about LLMs in 2024 by codr7 on Wednesday January 01, 2025 @12:43PM (#42567608)
Yeah, but it's oh so easy to test for, and oh so nice to have plenty of boxes checked to cover your ass if the hire goes wrong.
Re:Things we learned about LLMs in 2024 by swalsh on Tuesday December 31, 2024 @11:46PM (#42564019)
My expectations around productivity are going to assume you're using AI. That means stuff that might have taken a few days, i'm going to expect in a few hours or less. It's not unreasonable, i've seen over and over agian that kind of speed up. I have a lot less approval to hire people than I used to... so it's really important to me that I can extract that level of productivity out of my team.

If you're "working the way you want to" ie still handrolling all your code, you're going to find my expectations unrealistic, and that is certainly not fair to you.

Re:Things we learned about LLMs in 2024 by BeetleB on Tuesday December 31, 2024 @04:57PM (#42562173)
Just curious, but what AI related skills do you expect them to have?
Re:Things we learned about LLMs in 2024 by eschaton on Tuesday December 31, 2024 @06:28PM (#42562648)
The ability to recognize and join a hype train, I presume. It’s one way to appear proactively leading-edge to marginally-informed product managers, marketers, execs and press.
Re:Things we learned about LLMs in 2024 by adwn on Thursday January 02, 2025 @04:34AM (#42573023)
That's an extremely uncharitable presumption. Although I don't agree that routine usage of AIs should be a precondition for regular software engineering jobs, there are good reasons for using LLMs besides "joining a hype train".
Re:Things we learned about LLMs in 2024 by eschaton on Thursday January 02, 2025 @04:50AM (#42573114)
Nah.
Re:Things we learned about LLMs in 2024 by swalsh on Tuesday December 31, 2024 @11:54PM (#42564054)
I ask what their current workflow is, how they check and verify things, what their approach to prompting is etc. I'm looking to see that they've developed basic skills, have a reasonable mental model of what models can do well, what they currently can't do, and have an approach to be productive using the tools.
Re:Things we learned about LLMs in 2024 by BeetleB on Tuesday December 31, 2024 @04:57PM (#42562168)
I think most tech folks struggle with it because they treat LLMs as computer programs, and their experience is that SW should be extremely reliable - imagine using a calculator that was wrong 5% of the time - no one would accept that!

Instead, think of an LLM as the equivalent of giving a human a menial task. You know that they're not 100% reliable, and so you give them only tasks that you can quickly verify and correct.

Abstract that out a bit further, and realize that most managers don't expect their reports to be 100% reliable.

Don't use LLMs where accuracy is paramount. Use it to automate away tedious stuff. Examples for me:

Cleaning up speech recognition. I use a traditional voice recognition tool to transcribe, and then have GPT clean it up. I've tried voice recognition tools for dictation on and off for over a decade, and always gave up because even a 95% accuracy is a pain to clean up. But now, I route the output to GPT automatically. It still has issues, but I now often go paragraphs before I have to correct anything. For personal notes, I mostly don't even bother checking its accuracy - I do it only when dictating things others will look at.

And then add embellishments to that. I was dictating out a recipe I needed to send to someone. I told GPT up front to write any number that appears next to an ingredient as a numeral (i.e. 3 instead of "three"). Did a great job - didn't need to correct anything.

And then there are always the "I could do this myself but I didn't have time so I gave it to GPT" category. I was giving a presentation that involved graphs (nodes, edges, etc). I was on a tight deadline and didn't want to figure out how to draw graphs. So I made a tabular representation of my graph, gave it to GPT, and asked it to write graphviz code to make that graph. It did it perfectly (correct nodes and edges, too!)

Sure, if I had time, I'd go learn graphviz myself. But I wouldn't have. The chances I'll need graphviz again in the next few years is virtually 0.

I've actually used LLMs to do quick reformatting of data a few times. You just have to be careful that you can verify the output quickly. If it's a long table, then don't use LLMs for this.

Another example: I have a custom note taking tool. It's just for me. For convenience, I also made an HTML export. Wouldn't it be great if it automatically made alt text for each image I have in my notes? I would just need to send it to the LLM and get the text. It's fractions of a cent per image! The current services are a lot more accurate at image recognition than I need them to be for this purpose!

Oh, and then of course, having it write Bash scripts and CSS for me :-) (not a frontend developer - I've learned CSS in the past, but it's quicker to verify whatever it throws at me than Google it).

Any time you have a task and lament "Oh, this is likely easy, but I just don't have the time" consider how you could make an LLM do it.

Re:Things we learned about LLMs in 2024 by dartos on Tuesday December 31, 2024 @06:59PM (#42562805)
> Don't use LLMs where accuracy is paramount.

Then why do people keep pushing it for code related tasks?

Accuracy and precision is paramount with code. It needs to express exactly what needs to be done and how.

Re:Things we learned about LLMs in 2024 by simonw on Tuesday December 31, 2024 @07:04PM (#42562838)
Code is the best possible application of LLMs because you can TEST the output.

If the LLM hallucinates something the code won't compile or run.

If the LLM makes a logic error you'll catch it in the manual QA process.

(If you don't have good personal manual QA habits, don't try using LLMs to write your code. And maybe don't hit "accept" on other developer's code reviews either?)

Re:Things we learned about LLMs in 2024 by dartos on Tuesday December 31, 2024 @08:04PM (#42563118)
> Code is the best possible application of LLMs because you can TEST the output.

This is an overly simplistic view of software development.

Poorly made abstractions and functions will have knock on effects on future code that can be hard to predict.

Not to mention that code can have side effects that may not affect a given test case, or the code could be poorly optimized, etc.

Just because code compiles or passes a test does not mean it’s entirely correct. If it did, we wouldn’t have bugs anymore.

The usual response to this is something like “we can use the LLM to refactor LLM code if we need” but, in my experience, this leads to very complex, hard to reason about codebases.

Especially if the stack isn’t Python or JavaScript.

Re:Things we learned about LLMs in 2024 by simonw on Tuesday December 31, 2024 @08:06PM (#42563125)
So code review LLM-generated code and reject it (or require changes to it) if it doesn't fit your idea of what good code looks like.
Re:Things we learned about LLMs in 2024 by dartos on Tuesday December 31, 2024 @08:35PM (#42563264)
Or… yknow… I could just write the code…

Instead of going through a multi step process to get an LLM to generate it, review it, reject it, and repeat…

I wonder why you reply to these comments, but not my other asking what you use LLMs for and specifically explaining how they failed me.

Re:Things we learned about LLMs in 2024 by simonw on Tuesday December 31, 2024 @08:50PM (#42563344)
Found that comment here, about to reply: https://news.ycombinator.com/item?id=42562394
Re:Things we learned about LLMs in 2024 by BeetleB on Tuesday December 31, 2024 @09:01PM (#42563399)
> Then why do people keep pushing it for code related tasks?

They don't. You are likely experiencing selection bias. My guess is you work in SW, and so it makes sense that you're the target of those campaigns. The bulk of ChatGPT subscribers are not doing SW, and no one is bugging them to use it for code related tasks.

Re:Things we learned about LLMs in 2024 by dartos on Tuesday December 31, 2024 @10:21PM (#42563703)
I mean people in the software field absolutely push for LLMs to write code…

Obviously people not in the software field wouldn’t care…

Re:Things we learned about LLMs in 2024 by danielbln on Wednesday January 01, 2025 @08:59AM (#42566045)
Because there are other ways to validate the output, types being one of them, tests another. Or simply running the code. It's easy enough to validate the output given the right approach that code generated by an LLM (usually as the result of a conversation/discussion about what should be accomplished) is a net positive.

If you zero-prompt and copy-paste the first result into your codebase, yeah, the accuracy problem will rear its ugly head real quick.

Re:Things we learned about LLMs in 2024 by jaredsohn on Tuesday December 31, 2024 @06:57PM (#42562789)
A similar use case for me - I wrote some technical documentation for our wiki about a somewhat complicated relationship between ids in some database tables. I copied my text explanation into an LLM and asked it to make a diagram and it did so. Took very little time from me and it was fast/easy to verify that the quality was good.
Re:Things we learned about LLMs in 2024 by layer8 on Tuesday December 31, 2024 @06:53PM (#42562773)
I think there’s the added reason that a lot of folks went into tech because (consciously or unconsciously) they prefer dealing with predictable machines than with unreliable humans. And now that career choice begins to look like a bait and switch. ;)
Re:Things we learned about LLMs in 2024 by zahlman on Tuesday December 31, 2024 @10:42PM (#42563808)
> Don't use LLMs where accuracy is paramount. Use it to automate away tedious stuff.

My programmer mind tells me that "tedious stuff" is where accuracy is the most important.

Re:Things we learned about LLMs in 2024 by aleph_minus_one on Wednesday January 01, 2025 @04:08PM (#42569311)
> Instead, think of an LLM as the equivalent of giving a human a menial task. You know that they're not 100% reliable, and so you give them only tasks that you can quickly verify and correct.

The problem is: for the tasks that I can give the LLM (or human) that I can easily verify and correct, the LLM fails with the majority of them, for example

- programming tasks in my area of expertise (which is more "mathematical" than what is usual in SV startups) where I know how a high-level solution has to look like, and where I can ask the LLM to explain the gory details to me. Yes, these gory details are subtle (which is why the task can be menial), but the code has to be right. I can verify this, and the code is not correct.

- getting literature references about more obscure scientific (in particular mathematical) topics. I can easily check whether these literature references (or summaries of these references) are hallucinations - they typically are.

Re:Things we learned about LLMs in 2024 by simonw on Wednesday January 01, 2025 @04:14PM (#42569361)
LLMs on their own are effectively useless for references or citations. They need to be plugged into other systems for that - search-enabled ones like https://gemini.google.com or ChatGPT with search enabled or Perplexity can do this, although at that point they are mostly running the exact same searches you would.
Re:Things we learned about LLMs in 2024 by BeetleB on Friday January 03, 2025 @12:36PM (#42587678)
Your first task is definitely not what I would call a "menial" task.

Your second task is not a "task", but a knowledge search. LLMs are not good with searches (unless augmented - like RAG).

Re:Things we learned about LLMs in 2024 by mvdtnz on Tuesday December 31, 2024 @10:09PM (#42563656)
It's really important to go and read the code that the author of this article actually produces with LLMs. He posted on hacker news a few months ago, a post called something like "everything I've made with ChatGPT in the month of September" or something. He's producing little toy applications that don't even begin to resemble real production code. He thinks these "tools" are useful because they help him write pointless slop.
Re:Things we learned about LLMs in 2024 by Philpax on Wednesday January 01, 2025 @09:33AM (#42566219)
Do you know who Simon is?
Re:Things we learned about LLMs in 2024 by mvdtnz on Thursday January 02, 2025 @09:14PM (#42581501)
Only from his neverending stream of hacker news posts.
Re:Things we learned about LLMs in 2024 by simonw on Wednesday January 01, 2025 @09:43AM (#42566271)
Here's that post: https://simonwillison.net/2024/Oct/21/claude-artifacts/

You're misrepresenting it here.

The point of that post isn't "look at these incredible projects I've built (proceeds to show simple projects)."

It's "I built 14 small and useful tools in a single week, each taking between 2 and 10 minutes".

The thing that's interesting here is that I can have an LLM kick out a working prototype of a small, useful tool in only a little more time than it takes to run a Google search.

That post isn't meant to be about writing "real production code". I don't know why people are confused over that.

Re:Things we learned about LLMs in 2024 by wodderam on Wednesday January 01, 2025 @03:59PM (#42569248)
My experience is that for certain tasks LLMs are great, for certain tasks LLMS are basically useless.

The best prompts though are always written in a separate text file for me and pasted in. Follow up questions are never as good as a detailed initial prompt.

I would imagine well formulated questions to solve the problem at hand is a skill but beyond that I don't think there is anything special about how to ask LLMs a question.

In areas the LLM is rather useless, no amount of variation in prompting can solve that problem IMO. Just like if the tasks is something the LLM is good at, the prompt can be pretty sloppy and seem like magic with how it can understand what you want.

Re:Things we learned about LLMs in 2024 by simonw on Wednesday January 01, 2025 @04:15PM (#42569370)
I think one of the most important skills is being able to predict which tasks an LLM is a good fit for and which aren't.
Re:Things we learned about LLMs in 2024 by dogcomplex on Wednesday January 01, 2025 @04:40PM (#42569539)
I would characterize good prompting as: write out your whole problem you're trying to solve, then think to yourself what the clarifying questions would be if you were a junior trying to solve it. Better yet - ask the LLM to ask you challenging clarifying questions for several rounds. Then, take all that information and re-compile it back into a list of all the important components of the project, and re-read it to make sure there's no particular ambiguous part or weird part that would be over-emphasized by the language you used. Then, emphasize the core concerns again, and tell it how you'd like it to output the response (keeping in mind that it will always do best with a conversation-style format with loose restrictions). Never let a conversation stray too long from the original goals lest it start forgetting.

Once that's all done, you basically have a well-structured question you could pass to an underling and have them completely independently work on the project without bugging you. That's the goal. Now, pass that to o1 or Claude, depending on whether it's a general-purpose task (o1) or a code-specific task (Claude), and wait for response. From there, have a conversation or test-and-followup of whatever it spits out, this time with you asking questions. If good enough, done. If not, wrap up whatever useful insights from that line of questioning and put it back into the initial prompt and either re-post it at the end of the conversation or start a fresh conversation.

I find 90% of the time this gets exactly what I'm after eventually. The few other cases are usually because we hit some cycle where the AI doesn't fully know what to change/respond, and it keeps repeating itself when I ask. The trick then is to ask things a different way or emphasize something new. This is usually just a code-specific issue, for general problems it's much better. One other trick is to ask it to take a step back and just tackle the problem in a theoretical/philosophical way first before trying to do any coding or practical solving, and then do that in a second phase (asking o1 to architect code structure and then Claude to implement it is a great combo too). Also if there is any way to break up the problem into smaller pieces which can be tackled one conversation at a time - much better. Just remember to include all relevant context it needs to interface with the overall problem too.

That sounds like a lot, but it's essentially just project management and delegation to somewhat-flawed underlings. The upside is instead of waiting a workweek for them to get back to you, you just have to wait 20 seconds. But it does mean a ton of reading and writing. There are certainly already some meta-prompts where you can get the AI to essentially do this whole process for you and assess itself, but like all automation that means extra ways for things to break too. Let the AI devs cook though and those will be a lot more commonplace soon enough...

[Edit: o1 mostly agrees lol. Some good additional suggestions for systematizing this: https://chatgpt.com/share/6775b85c-97c4-8003-bd31-ee288396ab... ]