(´_ゝ`) the dimi-dome

agentic coding and local models

Unlike some of my fellow software engineers, I have not been all gung-ho on AI coding. I don’t vibe code, and I don’t really use all that much AI. I basically still use it exclusively in the browser where I give it some snippets and context specific questions.

To be fair, a big part of that is that my workplace has not formalized any kind of AI tooling or subsidized any spending. So I have yet to spend a single dime on an AI subscription. There’s also a healthy dose of skepticism of the security of the cloud-based models. And while there’s talks of buying local hardware for local ai compute, with the exponentially rising prices of said hardware, I am doubting we will get to that point any time soon.

I have a fairly beefy gaming computer, at least for the standard of 4 or 5 years ago… 32 GB of DDR5 ram, a 3080ti gpu with 12GB of VRAM, and an intel i9 12900k. So periodically I’ve attempted a local llm with LM Studio and the likes.

Today I tried to get it to solve a moderately difficult problem. Now, I am not familiar with the various coding harnesses, so I just wanted something I could interact with within VS Code. So I tried a couple of extensions.

The model I used is Qwen3.6 35B A3B (3B active parameters, a MOE). Which I heard can be run on the hardware I have and is pretty good for most coding needs. I gave it up to 60k context length. I get about 24 tokens per second, which feels fine until you get to thinking mode stuff.

First I tried Cline. I pointed my laptop at my gaming machine’s LM studio server on the local network, and gave it my prompt with all the context it should need. I saw that it was thinking a lot and trying to output something, but Cline kept failing to parse it. It looked like it was formatted fine to me, so I did some googling, and I guess Cline is yesterday’s news, so I threw it out.

One of the first things that came up was Roo Code. Which was formerly named Roo Cline. Roo C* originated as an open-source fork of Cline to do largely the same thing as far as I can tell. As of May 15 of this year, they rugpulled that shit and shut it down to work on Roomote which is a cloud-base ai agent thingy, so they can make some real money. So now there’s a fork of the fork called ZooCode. And that’s what I tried instead of Cline.

Here’s a nice mermaid chart to summarize the situation:

flowchart TD %% Nodes Cline[Cline
Original Extension] RooCline[Roo Cline
Open-source fork of Cline] RooCode[Roo Code
Rename of RooCline] Roomote[Roomote
Cloud-based AI agent
Commercial pivot] ZooCode[ZooCode
Community fork of Roo Cline] %% Relationships Cline -->|Forked| RooCline RooCline -->|Renamed| RooCode RooCode -->|May 15: Shut down & pivoted to| Roomote RooCode -->|Forked| ZooCode %% Styling classDef origin fill:#1a73e8,stroke:#0d47a1,stroke-width:2px,color:white; classDef fork fill:#fffff,stroke:#2e7d32,stroke-width:2px; classDef commercial fill:#fffff,stroke:#e65f0,stroke-width:2px; classDef community fill:#fffff,stroke:#7b1fa2,stroke-width:2px; class Cline origin; class RooCline fork; class RooCode fork; class Roomote commercial; class ZooCode community;

ZooCode attempt went much better, I will say it definitely looks and feels better than Cline. Time will tell when the next rename / fork will be.

So even this local ai model is definitely very good at make nice looking charts and markdown file summaries and documentation. The correctness of which is questionable at times, but hey it looks pretty. That being said, it’s solution to the problem I proposed it had several flaws I had to guide it away from. It also kept running into issues connecting the pieces together. And by the time it got “close”, holding around 40-50k tokens for the context, it got so slow I had to cancel it.

My problem was basically to introduce dependencies to a state loading system. The state was stored in a json file, and we really only cared about restoring the different components in the correct order at state-load time. Didn’t want to bake dependencies into the json itself for various and probably obvious reasons, so I steered away from that.

I had a high-level idea of what I wanted to do, but ai provided me two useful things.

  1. Kahn’s Algorithm (or more broadly, Topological Sorting)
  2. Brought to my attention the potential issue of cyclical dependencies.

I did end up mostly throwing away number 2 here, at least giving up on the compile time checking of cyclical dependencies, especially since I’m pretty sure the entire thing is overengineered to begin with since we only have 1 dependency right now.

I knew I had to order the dependencies somehow, but Kahn’s Algorithm was a neat thing to learn. Or maybe re-learn? Seems like something I probably covered in college. I always loved graphs, so it was nice to do something practical with them for once.

Anyway, the two hours or so the ai agent was spinning its wheels passed, and I nuked it and ripped out some things and made it better and smaller. Had to fix a couple logic bugs, but they were subtle and tricky so I would have expected my local model would get tripped up by it.

I think I would get more mileage out of my local model if I just set it up as a chat / brainstorm, and especially if I can set it up to do github copilot-like autocomplete. That would get me 10-15% speedups. The agentic stuff is just too annoying for me right now.

Something about becoming a glorifed spec-writer and a validator is just depressing and mind-numbing. And at the end of the day, I am responsible for the code I put out. If I can’t tell you exactly what it does, I am not pushing the changes out. So in any substantial change, I need to spend so much time reading and putting together code, that it’s basically the same as if I would have done it, except the fun part was taken away, and it’s almost always subpar in some way. Regardless if it’s frontier models, or local llms.

I’m not the world’s best coder by any stretch of the imagination, which is exactly why this global trend is worrying to me. If I can tell how mediocre the code is, how bad is it really?