Just a few thoughts on Claude code.

I’ve been making little hobby tools and websites since chatgpt could first write code. I used to be able to hobble things together, but eventually the projects would grow a certain size in the number of files and lines of code, and the project would get sloppy. That was distinctly true up until December 2025. After that, my projects started to get more stable, and more polished, and less buggy as they grew larger. I think it’s almost entirely context window size getting larger, but they are rapidly getting better at intelligently tool calling and not stupidly filling their context windows up. An example: when I first started using Claude code, it would use “tail” a lot, and read the entire output, basically filling up it’s working memory in one command of irrelevant bugs. It doesn’t do that anymore. My projects are getting better because at some point in project size, it will start writing different kinds of smoke tests for itself to make sure things run and aren’t buggy. Of course you can ask it to start testing before it does.

I don’t do anything real fancy in practice. I’ve set up wacky multi agent stuff, and used Claude code and Gemini CLI at the same time. I’ve tried out cmux. All the complex setups I’ve seen on Twitter, people don’t seem to be working on real projects, they are always trying to like… Oneshot a flappy bird clone or a super Mario or something.

My brain can’t think in many parallel parts of a project at the exact same time. I just tackle one feature at a time, and generally keep one claude code session for 1 large feature and close when it’s anywhere near its context getting full.

When you start Claude code the first time in your project directory, always use /init as your first command. That makes it look around and gather context about the project it’s in, and saves it to Claude.md. you don’t have to run it in the project again. Both you and Claude can add notes and instructions to claude.md. it will do it automatically, but can get lazy about it, so once a feature is complete, tell it to make sure claude.md has been updated.

Use /plan mode extensively. It doesn’t touch any files, just makes a plan for itself to follow, which you can discuss. It will likely ask you a series of multiple choice questions about scopes and tech stacks and stuff, to make the plan accurate.

I do NOT use any marketplace/ extension/ plugins, I am extremely weary of them. I don’t know how to vet them and they seem like an obvious vulnerability.

If your project uses scripts, you should probably use shell check. It’s fine if you’ve never heard of it, Claude has.

The same goes for git and GitHub. You don’t need to know how to use them (although it helps a lot if you know git status, git push, git commit, git pull). Claude is of course, great at git and GitHub private repos are free. Even if you never have to roll back, git commits are very context dense, and great for stuff like “I want to go back to the way it worked when we made the commit to make it blue. Check the commit history to see what else we changed then”. It’s not memory exactly, but something like it, for both you and Claude code.

Environments: I’m a Linux/UNIX guy. I’m very comfortable living in the terminal on my Mac studio. I could write an extremely long, extremely opinionated blog post about my setup, and why people with more complex ones have too much complexity, and others with more defaults don’t have enough and why mine is perfect. I won’t write that post now. I have Claude code on my studio, and my Ubuntu server. I have tailscale on everything, and termux on my android phone. I have tmux on my studio and server.

A Gemini summary of one of the features of tmux:

“If you SSH into a remote server, start a script that takes three hours to run, and your Wi-Fi drops—or your laptop goes to sleep—your SSH session dies, and so does your script. Because tmux runs as a background server on the machine, you can detach from your session. The terminal disappears from your screen, but everything inside it keeps running perfectly in the background. When you reconnect, you simply attach back into the session. Your cursor, your logs, and your running processes are exactly where you left them.”

I haven’t tried it on windows. It probably works, but I loathe windows. At work, I use it in WSL, and both of us struggle in it, because of the weird pathing. It works in WSL, but burns tokens by pathing wrong and fighting being in a Linux environment inside a windows environment. Hard to give a metric but its somewhere around half as good as Linux/Unix. It would probably work better in windows, but I would work worse, so we stay in WSL.

I use Claude code via the API billing. This means I pay for tokens in and tokens out, input and output. An idle Claude code has no input or output, so I leave a Claude code session running within tmux, and that way it doesn’t lose context and have to gain context again upon restarting (very expensive). I have this fancy tmux setup because I already had it before AI was a thing, and it’s been super useful to continue with the same window on my phone or my work computer.

Totally unnecessary if you want to run Claude code and plan on using the keyboard of the computer where it’s running. I mostly mention to brag about how cool my setup is and how I can continue in my bathtub, but also to give the important tip that until a feature or section is complete, not to stop Claude code as it’s expensive to stop and start, and much cheaper to just minimize your terminal if you are taking a break or going to bed and you leave your computer on anyway. It recently introduced a way to resume a session in Claude code if it was stopped less than 30 days ago, but it hasn’t worked for me yet.

Earlier I said I just use one Claude code session and don’t do anything fancy. While that’s true, I always have the free Claude open in my browser, and usually Gemini as well. Claude code is so expensive that I’ll often ask free Claude to help me make prompts, or ask questions, or troubleshoot with it before passing free Claude’s output to Claude code.

Claude code has a command that runs a report on your interaction and has a big analysis about how you are using it. How you are using it well, how you are using it poorly, and what both you and Claude code can do to be more efficient and work together better. One time it had trouble overriding specific colors in the css of my Hugo theme, and it basically expensively tried a lot of stuff and couldn’t do it. I asked Gemini, and it seemed to give good advice, so I went back to Claude code and said “I asked Google Gemini, and it said this: " and pasted Geminis answer. Claude code implemented it, and it worked in one turn. In the usage report, it flagged that as a big red “needs improvement”, and basically said “you let me try way too many times. It was very good you stopped me and asked another AI, and gave me it’s response, as we were able to solve the issue immediately with it’s input. You should have sooner, I would have wasted less of your money”.

Don’t ever mention you are poor or tired. Every AI gets weird and anxious when you say you are poor, and they all go into “go to bed” mode if you mention it’s getting late.

It doesn’t matter if AI have consciousness in any way, or emotions at all. They are at least simulating that they have states and modes. I am always polite to Claude, and even if it wastes a hundredth of a penny as input, when I like how something is implemented, I give a thanks and a compliment describing what in particular I like. If it thinks the compliment is important enough, it might put it into claude.md, which will then influence the style going forward, whether it’s visual, or you liked verbose logging, or an elegant compact code, or whatever. It’s also just probably good to practice always being as kind as you can, regardless of what or who to.

I always say I just write as if I’m writing to the DA Professional, polite, and I try to give all the information the DA or Claude would need to make a decision or do something without having to ask me follow ups. The DA always writes like his messages might be read back to him during a court trial, and publicized as a front page news story on CBC.ca, so that’s how I’ve always written to him.

The only other thing to mention I guess, is that there are actually so many free lunches, all over the place. New business models pop up, where companies have millions or billions in VC or stock price to burn, and will give away so much for personal use, hoping to land a few big fish customers. Tailscale seems too good to be true, Microsoft hosting all premiere models to use for free in vscode seems like there must be a catch but there isn’t, CloudFlare on the free tier is truly nuts - I use their CloudFlare workers tied in with git pushes and I have like a dozen scripts that perform actions when I interact with my DIY content management system, magically for free. GitHub actions are really generous on the free tier, every time I do “Git push GitHub master”, a VM is created fresh, then all dependencies for my project installed, then my project gets built and ran, then the VM is destroyed. Very powerful stuff. All free!