Hacker News new | ask | show | jobs
by dnh44 310 days ago
Last summer I came back to software after about 12 years away and I pretty much had an identical experience to you with using AI as a helper to come back. I've now spent the last 6 months coding as much as I can in between consulting gigs. I'm not sure if I would have been able to get caught up so quickly without AI.

I haven't had this much fun programming since I was at university hacking away on sun workstations, but admittedly I only write about 10% of the code myself these days.

I'm currently getting Claude Code to pair program with GPT-5 and they delegate the file edits to Gemini Flash. It's pretty cool.

2 comments

> I haven't had this much fun programming

I'm glad you're having fun. I wish I was having fun. I've had mixed results but quite often, for me, the GPT goes off the rails and does something completely stupid. It then doubles down. It's like talking to complete idiot who happens to have moments of lucidiy. If I get lucky and get a lucid response it's great. But so often I get the nonsense response. I mean literally as bad as the "there 3 letter Bs in the word blueberry" answer eariler today (https://news.ycombinator.com/item?id=44832908) accept code instead of spelling. I wish I knew what I was doing wrong.

A couple of things that really helped me (Claude is my choice for coding):

- add to your global settings a few lines that say something like "don't write any code until you fully understand my requirements, ask questions until you are completely clear", this mostly stops it just going ahead and writing best guess just the first time. And then,

- when it looks it's going off the rails, cut your loses straight away and ask it to write a prompt for another chat. Tell it to cover everything it knows about what you're working on and what you want to do. Paste that into the new chat and get it to ask if it needs clarification (and then if needed, paste between the two chats). The new chat often solves the problem the other one was stuck on first time.

Hope they help - coding with AI has made me enjoy the process once again. I'm actually completely silly projects I've always wanted to do because I can get past the blockers so much more easily.

I'm having good results with similar stuff, but not sure about the best approach. What exactly do you mean by "your global settings"? Do you have a global CLAUDE.md file? Or do you do this via the UserPromptSubmit hook and return an additionalContext? I use this hook to constantly reinforce some things, like "be concise. use context7." It even works to put "ultrathink" in there to always have it in thinking mode. But I wonder if these constant reminders are overdoing it.
Hey, fwiw I'm almost certainly not using Claude in the best possible way - I have a 'pro' (as in the ~$20 a month plan) and I just prompt. But in the 'Settings' section there's a bit that says: "What personal preferences should Claude consider in responses?" - I add stuff in there.
Ah thats interesting. I only use Claude Code right now and don't have anything in that section you mention. Wonder how/when its applied and if it is also applied to CC...
With Claude code you can have a personal, project (shared) and project local set of memory files.

I would put the bits about clarifying questions in your personal (machine level) claude.MD file so it applies across projects.

I use claude.ai too and it is fine for me, even though I do the copy-pasting, or uploading.
If it’s going down the wrong path or doesn’t do something right the second time you ask, stop, copy everything to a new chat and continue.
These are some of the things I do to try and get good results:

- I prime the context of the LLM with any extra rules or instructions I want it to follow.

- I also prime the context with every single file it needs to see in order to be able to do its job properly. Sometimes this can be two files but sometimes it can be 15 files.

- I instruct the LLM in bullet point format for smaller edits. For larger edits I ask the llm to convert my prompt to markdown. Most of my prompts are created by an LLM

- In 90% of cases I only prompt once per chat, and start a new chat each time. Unless I'm using an agent like Claude Code in which case I use one context window per feature.

- I keep notes of small things that it's done not quite how I want so I can go back and change them.

- I use a program called RepoPrompt to make all this faster and easier.

I'm working on making a game right now and this was the last prompt I did last night. The prompt itself was written by Opus and the implementation was done by GPT-5 High. The actual file edits were performed by Gemini 2.5 Flash to save on API costs.

--- Prompt from Opus:

I need to implement a GameTick event bus system for Ionforge. This will add:

1. A new GameTick model (Sendable, Codable, Hashable) with turnNumber, secondsUntilNextTick, and inGameDateTime

2. A GameTickEvents enum following the pattern of OreInventoryEvents using Combine PassthroughSubject

3. A GameTimerService protocol with tickPublisher, start(), and stop()

4. A MockGameTimerService that generates ticks every 600 seconds using Task.sleep

5. Modify GameServiceActor to own the timer service, subscribe to it, broadcast to GameTickEvents, and cache latestTick

6. Modify PlayerServiceActor to subscribe to GameTickEvents and cache latestTick

The goal is to create an event-driven tick system that can later be swapped from mock to real API. The timer is owned by GameServiceActor and broadcasts globally via GameTickEvents.

Please implement these changes following the existing patterns in the codebase, particularly matching the OreInventoryEvents pattern for the event bus.

--- Response from GPT-5 High:

- Create a new GameTick model (Sendable, Codable, Hashable) with turnNumber, secondsUntilNextTick, and inGameDateTime.

- Add a GameTickEvents enum mirroring the existing OreInventoryEvents pattern (Combine PassthroughSubject).

- Define a GameTimerService protocol that exposes a Combine publisher and start/stop controls.

- Implement MockGameTimerService using Task.sleep to emit ticks every 600 seconds.

- Update GameServiceActor to:

  - own a GameTimerService (mock by default),

  - subscribe to its publisher,

  - broadcast via GameTickEvents,

  - cache the latest tick.
- Update PlayerServiceActor to subscribe to global GameTickEvents and cache the latest tick.

- Keep edits targeted and minimal using delegate edit scopes, with proper Combine imports.

---

GPT-5 then outputted about 120 lines of code across 7 files that compiled and worked on the first try.

This sounds less like engineering advice and more like spellcasting advice.
What part of this prompt reads like "spellcasting" to you?
It's all guesses, heuristics, and folk wisdom.
Which part? Be specific. They took the trouble to actually give a full prompt.
Yeah it is a bit isn't it
Just trying to help, but maybe the LLM is interpreting words like “accept” differently than you think they are.
> I'm currently getting Claude Code to pair program with GPT-5 and they delegate the file edits to Gemini Flash. It's pretty cool.

This sounds cool, any more details or any write up on how to do something like this?

I use a program called RepoPrompt to do it. The dev has a video here:

https://www.youtube.com/watch?v=JzVnXzmZweg&t