Select your language

I've had Protos, my own programming language, in my head for a long time. For years, it was one of those ideas you keep developing mentally, revisiting, putting aside and picking up again. Artificial intelligence changed something important: for the first time, I could turn that idea into a real project without having a whole development team behind me.

There was, however, one question I hadn't answered: how could I keep developing at that pace without spending a fortune on AI? What began as a search for the cheapest tool became a small odyssey involving subscriptions, APIs, usage limits, millions of tokens and several changes of strategy.

My first mistake: confusing cost per token with cost per completed task

One experiment involved using Claude Code as the agent, connected to DeepSeek models through their Anthropic-compatible API. The appeal was obvious: pay only for what I used and keep control of the budget. If I put in two euros, I could only spend two euros.

At one point, DeepSeek's accumulated usage showed 299,529,415 tokens across 3,084 requests, for $15.70. On paper, that was an impressive token price. But there was another problem: some tasks required far too many attempts. When a model struggles with a complex issue, it reads the context again, suggests changes, corrects itself and burns through more tokens. In the end, the meaningful figure isn't the cost of a request. It's the cost of getting a correct result.

I also learnt that context itself can be expensive. In another project, housewire, apparently simple operations became costly as the repository grew. The directory took up about 909 MB, but the relevant source code was closer to 9 MB; the rest included a virtual environment and test browsers. An agent that looks at too much can spend a surprising amount without making much progress.

Subscriptions weren't a magic solution either

I tried the tools bundled with subscriptions. ChatGPT offered something I genuinely valued: several parallel research conversations, access to repositories, and room to work through architectural decisions. During one particularly intense period, I exhausted access to the most capable model in roughly five days.

Codex worked well as a coding agent, but I saw its allowance disappear in around ten minutes, even on relatively small tasks. Claude Code had limits too. And building Protos wasn't something I wanted to do in the occasional spare hour: I was aiming for several hours of work a day, several days a week.

So I tried what seemed like the obvious alternative: run Claude Code directly against Anthropic's API and pay for usage instead of relying on a subscription. That experiment didn't last long. Five dollars were gone in about fifteen to twenty minutes, and the next option offered involved adding a hundred dollars of credit. That wasn't sustainable for a personal project.

My target budget was fairly modest: ideally between zero and fifty US dollars a month for Protos. Above a hundred dollars, I'd need funding; two hundred or more simply made no sense for me. I liked pay-as-you-go in principle — spend more during an intensive week and less during a quiet one — but the experiments taught me that predictability has value too.

The decision: separate thinking from execution

I eventually arrived at a setup I hadn't originally been looking for: ChatGPT for conversation and research; Claude Code as the coding agent inside Visual Studio Code.

With ChatGPT, I investigate how other languages solve a problem, compare alternatives, examine documentation and code, discuss Protos design decisions, and prepare precise implementation instructions. I want that research to be thorough: when a decision affects the semantics of a programming language, I'd rather spend the necessary time understanding it before changing code.

Then, once a decision has been made, Claude Code works in the repository, edits the specific files and performs the authorised checks, following the project's AGENTS.md rules. I still approve substantive decisions, review the evidence and decide when a change is ready. For particularly delicate investigations, we work interactively and I run the measurements myself.

This separation has a practical benefit: the coding agent doesn't need to rediscover everything we've already researched in every session. Nor do I need to spend its implementation allowance on an architectural discussion that may last for hours and quite reasonably end with the decision to change nothing.

The cheapest approach is the one that lets me carry on tomorrow

I haven't discovered a miracle pricing plan, and I don't think my current combination will suit everyone. In fact, there's some irony in starting out determined to avoid multiple subscriptions and ending up using two different services. But each now has a clear purpose, and I can judge the cost by the work I actually complete.

AI doesn't magically write an entire programming language, and it doesn't replace testing, difficult decisions or engineering judgement. What it has done is give me the chance to work on an idea that had been waiting for its moment for years. After quite a few adventures, I've learnt that the cheapest tool isn't the one that generates tokens at the lowest price. It's the one that helps me make correct progress and come back to work the next day.

That experience also shaped how I develop Protos, an idea whose time has finally come.