Harper Reed

harper.blog · Personal blog · on HN since 2024

Harper Reed writes about using LLMs and Claude Code for software development, workflows, and personal automation experiments.

What HN saysCommenters recommend his LLM codegen workflow post as an effective prompt flow and say he explains defensive coding with tests and linters well.
25HN people shared it
13linked it in comments
12stories submitted
911story points
7 months agolast shared
2024people per year2026

Most-shared posts

  1. 1
    My LLM codegen workflow
    15 people · 525 points · first shared 2025 · 160 comments on HN
  2. 2
  3. 3
    I accidentally built a meme search engine
    1 people · 319 points · first shared 2024 · 52 comments on HN
  4. 4
    Basic Claude Code
    1 people · 5 points · first shared 2025 · 1 comments on HN
  5. 5
  6. 6
    An LLM Codegen Hero's Journey
    1 people · 2 points · first shared 2025 · discussion on HN
  7. 7
  8. 8
  9. 9
    Waterfall in 15 Minutes or Your Money Back
    1 people · 1 points · first shared 2025 · discussion on HN
  10. 10
    Getting Claude Code to do my emails
    1 people · 1 points · first shared 2026 · discussion on HN

What HN people wrote when they linked it

pchristensen · 2025-05-26
Harper talks a lot about using defensive coding (tests, linters, formal verification, etc) so that its not strictly required to craft and understand everything. This article (and several that follow) explain his ideas better than this out of context quote. https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/
eightysixfour · 2025-04-10
I have had Claude Code build authentication before successfully, following a pattern approximately like this: https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/
chisleu · 2025-06-04
About 6 months ago I became incredibly interested in game theory, especially as it relates to playing poker. Myself, a mediocre poker player, have only been playing for about a year. When I discovered that most online poker sites allow you to export your hand history, I was shook! Over the weekend, I built this site and got it online. It's massively scalable and HA. All the infra is in terraform. Everything is in Alembic. All the code is fairly high performance. And, all of it was vibed coded. Most important is that all the infra to the best of my knowledge follows all the AWS cloud best practices. Following a blog from earlier in the year, I discovered the workflow of having GenAI to help me craft my prompts for GenAI. At first, it served as a recommendation engine for options for features I hadn't imagined. (https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/) It transformed into a process where I used the prompts and further iteration in Cline's plan mode to build really useful features, testing first, and with all the Markdown documentation I care to generate. (https://cline.bot/) This meant I was able to move at incredible speed relative to my normal development cycle, and built a reasonably attractive, actually useful site in about 2 days. Anyways. I don't have friends IRL so I'm sharing with HN Create an account if you want to try the AI agent. There is no spam and no email confirmation. Here is an example "phh" datafile if you don't have one yourself:…
0xEF · 2025-04-11
Not OP, but if you are asking for your own reference or projects, I've found this "prompt flow" to be very effective: https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/ The reasoning models seem to respond quite well to the "ask me one question at a time, building on my previous answer" for the sake of coming up with a solid blueprint for the project, then build from there. I used this method to make a nice little inventory/rma tracker for my job using Rails 8, and it got me MVP in a matter of hours, with most delays being just me refining the code on my own since some of it was a bit clunky. I used o3 mini to generate the initial prompts, then fed those to Claude. The hallucinations/forgetfulness was relatively minor, but if I did not have prior Ruby/JS knowledge, I doubt I would have caught some of the mistakes, so as much as I was impressed by the method outlined in the blog post, I am not at all saying that someone with no knowledge of the language(s) they wish to use is going to create a great piece of software with it. You still have to pay attention and course correct, which requires a working understanding of the dev process.
mbesto · 2025-12-11
> There's a significant blind-spot in current LLMs related to blue-sky thinking and creative problem solving. It can do structured problems very well, and it can transform unstructured data very well, but it can't deal with unstructured problems very well. While this is true in my experience, the opposite is not true. LLMs are very good at helping me go through a structure processing of thinking about architectural and structural design and then help build a corresponding specification. More specifically the "idea honing" part of this proposed process works REALLY well: https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/ This: Each question should build on my previous answers, and our end goal is to have a detailed specification I can hand off to a developer. Let’s do this iteratively and dig into every relevant detail. Remember, only one question at a time.
jackdawed · 2025-08-10
One blogpost I found on HN completely leveled up how I use LLMs for coding: https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/ Having the AI ask me questions and think about the PRD/spec ultimately made me a better system designer.
charlysl · 2025-07-14
Is it something similar to Harper Reed's "My LLM codegen workflow atm"? https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/
SirYandi · 2025-05-22
https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/ "tl:dr; Brainstorm spec, then plan a plan, then execute using LLM codegen. Discrete loops. Then magic."
imiric · 2025-05-19
The trick for greenfield projects is to use it to help you design detailed specs and a tentative implementation plan. Just bounce some ideas off of it, as with a somewhat smarter rubber duck, and hone the design until you arrive at something you're happy with. Then feed the detailed implementation plan step by step to another model or session. This is a popular workflow I first read about here[1]. This has been the most useful use case for LLMs for me. Actually getting them to implement the spec correctly is the hard part, and you'll have to take the reigns and course correct often. [1]: https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/
buss_jan · 2025-03-14
There recently was a post by Harper Reed that goes into how to prepare the right prompts before you start coding with LLMs and break that down into smaller debuggable step. It might kill the vibe, but it keeps you in the drivers seat. https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/
tydunn · 2025-02-27
Super cool! I enjoyed reading Harper Reed's post too. For anyone, who hasn't seen it: https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/
BeetleB · 2025-05-23
Thanks for the concrete examples! These seem to be more sophisticated than the cases I use them for. Mostly I'm using them for tedious, simpler routine code (needing to process all files in a directory in a certain way, output them in a similar tree structure, with changes to filenames, logging, etc). Your Django ORM may be more complicated than the ones I use. I haven't tried it much with Django (still reluctant to use it with production code), but a coworker did use it on our code base and it found good optimizations for some of our inefficient ORM usage. He learned new Django features as a result (new to him, that is). > I tried to prompt it with a chat style discussion, but it often did bigger edits I would have liked, and failed to share a high-level plan in advance, something I often requested. With Aider, I often use /ask to do a pure chat (no agents). It gives me a big picture overview and the code changes. If I like it, I simply say "Go ahead". Or I refine with corrections, and when it gets it right, I say "Go ahead". So far it rarely has changed code beyond what I want, and the few times it did turned out to be a good idea. Also, with Aider, you can limit the context to a fixed set of files. That doesn't solve it changing other things in the file - but as I said, rarely a problem for me. One thing to keep in mind - it's better to view the LLM not as an extension of yourself, but more like a coworker who is making changes that you're reviewing. If you have a…
tmpz22 · 2025-04-23
In no particular order: * experiment with multiple models, preferably free high quality models like Gemini 2.5. Make sure you're using the right model, usually NOT one of the "mini" varieties even if its marketed for coding. * experiment with different ways of delivering necessary context. I use repomix to compile a codebase to a text file and upload that file. I've found more integrated tooling like cursor, aider, or copilot, are less effective then dumping a text file into the prompt * use multi-step workflows like the one described [1] to allow the llm to ask you questions to better understand the task * similarly use a back-and-forth one-question-at-a-time conversation to have the llm draft the prompt for you * for this prompt I would focus less on specifying 10 results and more about uploading all necessary modules (like with repomix) and then verifying all 10 were completed. Sometimes the act of over specifying results can corrupt the answer. [1]: https://harper.blog/2025/02/16/my-llm-codegen-workflow-atm/ I'm a pretty vocal AI-hater, partly because I use it day to day and am more familiar with its shortfalls - and I hate the naive zealotry so many pro-AI people bring to AI discussions. BUTTT we can also be a bit more scientific in our assessments before discarding LLMs - or else we become just like those naive pro-AI-everything zealots.

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close