Never Stop Breaking Up

Just wasn’t meant to be

About two months ago1 I signed up for a frontier LLM / AI subscription. It was the lowest plan at Anthropic so I could use Claude Code. I have a small website business2 that had a lot of stuff broken for a while. Although I had paid a few hundred dollars to a few different developers and even tried to hire several more to help, I wasn’t able to get anyone to help out or write a single line of code. It’s not that fixing the various code problems within a WordPress plugin are beyond me3 but more that tracking down and fixing a bazillion little problems would have been extremely time consuming4 and I just didn’t have the time.

Okay, enough justifications –  I signed up for Anthropic at $20/month and honestly, it was fantastic. I have built out two or three big projects, easily a dozen medium projects, and I have no idea how many minor items. I could go from idea to description to implement so much faster than I could have alone, it’s not even funny.  I’m confident I will keep using several of the things I’ve built for a very long time.  The $20/month plan has it’s limitations – you have a limited amount of amorphous compute you can use during 5 hour stretches as well as a limited amount you can use during a weekly period.  During “non-peak” hours you have more amorphous compute.  I know you get a ton more compute with the $200/month plan, and honestly it’s almost certainly worth it to a full time developer, but I have so many misgivings about funding companies whose value proposition involves boiling oceans of drinking water, slurping up energy, enabling surveillance states, and allowing computers to make decisions in wartime.

Anyhow, I cancelled my subscription today just before it was about to renew for the second time.  I’ve given Anthropic $40 of my money and gotten well more than that in value, so I’m fairly content with that transaction.  But, now that my bigger projects are done I don’t have a need for continued use and can make due with either free options or roll code by hand.

I was tempted.  I’m still tempted.  If I paid several hundred dollars to real humans and received nothing, I could absolutely find a way to spend $240/year to enable me to build more complicated things faster.  Even without these justifications5 I can absolutely afford $20/month.6  But, much like an evil ring that grants you some modest powers, I’m pretty sure the hidden costs just aren’t worth it.

I wondered when I started using a paid LLM again7 how long I would keep paying for it.  I probably got value out of ChatGPT for about two or three months and after that I mostly kept it out of convenience, inertia, and make stupid pictures.8  I stopped using it because I wasn’t getting steady value out of it and I didn’t like continuing to fund OpenAI.  Would I keep the Claude subscription for months longer than I was really using it – out of the convenience of having a frontier LLM on tap?

It didn’t hurt that it felt like Claude was steadily getting less intelligent and helpful.9 If I were a more paranoid or cyclical person I would believe cell phone manufacturers make their phones slow down just as the new flagship phones are released and frontier LLM companies dumb their models down when the newest pricier models come out.

… but maybe slightly tempted?

As frugal as I am, I’m willing to pay for a frontier model because they’re incredibly helpful in realizing .  However, I don’t want to support most of the frontier companies10 , their evil alliances11 , or side quests to block other AI companies from developing, devour the earth’s energon cubes, and boil the oceans.

I mean, why can’t I just do this on a small scale at home?  Part of the problem is that even trying to get my hands on a very small PC is becoming unnecessarily expensive.  At the time I’m writing this, the Raspberry Pi 5 16GB12 is going for $305, closing in on triple the initial MSRP of $120.  Adding a case, some cables, the AI HAT+ 2, a heat sink / cooler, and beefier power supply would probably bring the cost to $600.  I could buy a whole extra brand new desktop PC for that price.  Or just use my current desktop to run an LLM in the background.

Which is what I’m doing literally right now.

I’m running LM Studio on my modest PC13 to serve up small LLMs to VS Code and Cline, to go through some small Python codebases to help me with some projects.  After quite a lot of trial and error, I’ve basically settled on Qwen 3.5 9B using a 4-bit quantization as the best model I can run on my machine that can actually help.  It is punishingly slow… but it does work.  Something that might have taken a frontier model 5-10 seconds to do takes my machine probably an hour.  Some light web research suggests that a frontier model is probably operating around 50-100 tokens per second while my machine can manage a blazing 1-2 tokens per second.

The man has a point…

Since I’m rambling here anyhow…  I’m going to backtrack slightly, just so I can give a little context.  Sometimes I’ll find myself stuck in a cognitive loop of frustration and rabbit holes and decision paralysis.  Writing these things down lets me excise exorcise14 these thought-demons at the cost of inflicting them upon my legions of loyal readers.  I find jotting things down in a semi organized fashion means I don’t have to keep all the little pieces of ideas swirling around in my brain.  I can finally relax, knowing they’ve been realized… somewhere.  This is why I’ll jot down some sketches, create some scraps of code, or tuck a note away in Standard Notes.1516 Well, Working with frontier models makes me hate their rate limits and everything they stand for, which makes me want to build my own.  Where was I?

Right.  I’ve been swirling around the vortex of working with a frontier LLM’s, getting sick of paying and/or supporting them, try some free API resources, bump into their free tier limits, fall down a rabbit hole investigating what it would cost to build a machine of my own, get disgusted at the cost and figure I’ll just run them on my current machine, get slightly frustrated at the time it takes to do anything meaningful, and wonder about maybe throwing a few dollars at a frontier LLM … just to get this project finished.  But, I don’t need a frontier LLM right now and I don’t need to get things done fast … especially when I should be doing the work I perform in exchange for the money I use to pay my mortgage.

¿Por que no los dos?

In some ways, having a very slow LLM at my disposal is actually helpful.  Yes, it does mean I have to listen my little PC’s fan hum to itself for an hour to accomplish something kinda basic.  But, then again… it’s busy working on something, freeing me up to do other things.

Like write blog posts.

He’s got a point…

Plus, there are some possibly realistic uses for this kind of super low cost basic research / experimentation.  I’ve been using this cobbled together system of various LLM’s, frontier and local, plus my modest Python skills, to try and create a semi-useful virtual assistant.  I’ve connected to a few very small LLM’s so it can act as a human-ish interface for useful scripts17 , connected it over the Matrix protocol so I can talk to it securely from a phone even when I’m not home, and now that I know which kinds of models would work for some simple Python code generation, I could have a useful slow coding helper wherever I need it.  Frankly, the main use of the coding assistant for me right now is building deterministic scripts that help me on a daily basis.  There are other directions I could imagine taking this project from here.  By adding a Meshtastic node to my home set up and carrying a small Meshtastic device with me, I could still stay in touch with my very slow and low bandwidth PC wherever I was.  With a solar panel or power supply, I could even run all this entirely off grid.  Going completely off grid isn’t something I’m super into, I like having easy access to broadband and grocery stores, but it sure would be neat and a good excuse to buy a few small Meshtastic devices.

Of course, once I start spinning around the idea of a Meshtastic node, I’ll want to bundle it with a Raspberry Pi 5…

Software Development with LLMs
  1. Series Plugin Test for Illustrative Purposes Only
  2. ChatGPT WordPress Plugins
  3. Coding with an LLM Sidekick
  4. Python Practice with an LLM
  5. Not Team AI
  6. Never Stop Breaking Up
  7. Weakness
  1. You know, before our latest war and revelations AI companies were helping power the county’s military. []
  2. Very boring []
  3. I’m kinda decent at plugin dev for someone with zero training []
  4. Cue meme of Don Draper yelling “That’s what the money is for!” []
  5. Forgive the humble brag []
  6. Just look at all these streaming services I pay for. []
  7. I paid for ChatGPT in 2023 and 2024 []
  8. I made several “make it more” style pictures… []
  9. I was going to find a link to support this … sense – but there were honestly too many links to too many articles I didn’t want to vet.  Suffice it to say the “vibe” I got is that as of April 2026, I’m not the only one who feels like Claude got stupider.  My impression of the consensus is that Claude got too many users, resource usage went up, and quality went down. []
  10. OpenAI, Anthropic, Grok/Twitter/Elon, Google/Evil, or even MicroSoft []
  11. billionaires, oligarchs, fascists, surveillance states, Bezos, Musk, or certain president-grifters []
  12. If you can find one! []
  13. Bought long before RAM-pocalypse []
  14. Sheesh. []
  15. I used to use plain text files, then Google Keep, but you know what – this is service is great and it’s not Google or evil []
  16. As far as I know []
  17. Downloading files automatically, setting reminders, etc []

Coding with an LLM Sidekick

I fell down a rabbit hole recently which lead me to think about my experiences in the nascent field of “prompt engineering.”12

As a thought experiment, I was thinking about what I’ve managed to accomplish working with an LLM, the challenges along the way, and perhaps even where I can see the frayed edges of its current limitations.

After several starts and stops trying to hire someone to assist with a website I own, I turned to the idea of getting help from an LLM. 3 4  After all, some of them were touted as being able to actually draft code, right?  Besides, if the first step in even hiring a developer is just being able to describe what you need, and the first step of getting an LLM to generate some code is defining what I need, then…

There's no way this is going to work, right?
There’s no way this is going to work, right?
  1. Task 1:  Pie Chart WordPress Plugin

    1. I started off with a simple and easy to define task.  My original plugin was a quick and dirty bit of code, so if ChatGPT could create a WordPress plugin, there was a chance it could do something simple like this.
    2. My first attempt was a wildly spectacular, but highly educational, failure.  A brief description of the plugin’s function was enough to get a WordPress plugin template file with very little functionality.  Then came the arduous LLM wrangling, my asking it for refinements, it losing track of the conversation, and the endless sincere heartfelt apologies from ChatGPT about forgetting really basic pieces of information along the way.  Some changes were minor, but changing the names of variables, functions, the plugin, switching API’s, forgetting requirements, etc.  It was constant whack-a-mole that spanned nearly 90 pages of text.
    3. My next attempt was more focused.  I created a framework for discussions, provided more context, goals, descriptions of workflow, and resources for examples.  The result was a lot better, with portions of largely functional code.  However, the LLM kept forgetting things, renaming variables, files, directories, etc.
    4. Next I created the directory structure and blank placeholder files, zipped these, and uploaded them as an attachment for the LLM to review – along with a description of the contents and the above additional context.  This was even better than before, but after a certain depth of conversation no amount of reminding could bring the LLM around to the core of the conversation.
    5. My thinking was that after a certain level of conversation, the LLM was not going to be able to synthesize all of nuance of our conversations plus the content of the code drafted.  To get around this I would begin a conversation, make a little progress, then ask it to summarize the project, the current status, and a plan for completion – which was fed into an entirely new conversation.  This way, Conversation N was able to provide a succinct and complete description which Conversation N+1 could use as a jumping off point.  My thinking was that the LLM would be best positioned to create a summary that would be useful to another LLM.
    6. This process of minor “restarts” in the conversation was one of the most successful and powerful techniques I’ve employed to combat LLM hallucinations and forgetfulness.
  2. Task 2:  Blog Post Series Plugin

    1. After rewriting the above pie chart plugin using an LLM, I turned my attention to a slightly more complicated plugin.  The pie chart plugin is really just a single file which turns a shortcode with a little bit of data into a nice looking pie chart.  There’s no options page, no cross post interaction, database queries or anything.  It was really just a test to see if an LLM could really draft a basic piece of working code.
    2. The series plugin is still a reasonably simple piece of code, but it has several additional feature which require a settings page, saving settings, custom database queries, and organizing information across multiple pages.  It’s also one of the most used plugins on this website.
    3. I figured I would try feeding the LLM a description of my plugin, all the code in a directory structure, and then my initial “base” prompt which explains our roles, needs, resources, and scaffolding for a discussion.  I asked the LLM to summarize the function and features of the plugin, which it did quite nicely.  I added a few additional features I had previously worked on and asked it to incorporate this into the description.  Asking the LLM to simply “build this WordPress plugin” was met with a “you need to hire a developer” recommendation.  However, asking it to propose a workflow for building a plugin with these features was successful.  I was provided with a roadmap for building5 my plugin.
    4. This system worked reasonably well, allowing me to compartmentalize the steps, backtrack, retrace, revise code, working on a section, then another, sometimes going back to a prior sections at the LLM’s direction.  The LLM still tended to get lost, renamed variables/paths/directories/filenames, but it was less pronounced than before.  I did find it harder to use the “summarize and restart” strategy when dealing with a multi-step code development system.  However, it was still workable since I could upload all the code produced so far.
    5. The result was a new plugin, with better functionality than what I’d written myself 10 years before.  Here, the new strategy of having the LLM break the project into sections and providing a roadmap was particularly helpful.
  3. Strategy:  Conversational Scaffolding
    1. I mentioned “conversational scaffolding” and “frameworks” for discussing things with the LLM above.  This was an overarching and evolving strategy I use to help focus the LLM on the goals, keep it on track, and hopefully help it provide meaningful and useful replies.  The full text of my “prompt framework” file is too large to include here, but I’m happy to provide the highlights.
    2. Personas.  I assigned the LLM three distinct personas with differing backgrounds, strengths, and goals.  Their personas were defined in reference to one another, so the first would activate, the second would then review and interact with the first, after this process completed the third would be activated, perhaps interact with the first two, then it would move on.  I would say this process was rather successful.
    3. Myself.  I would describe myself, my goals, level of expertise, etc.  I found that I if I referred to myself as an expert, the LLM would not be as likely to offer me code proposals – but if I described myself as a newbie, it would recommend I hire a developer rather than tackle such a complex problem myself.
    4. Rules for Conversation.  These are a collection of 12 rules (at last count) which helped myself and the LLM interact.  The high points are:
      1. Answer Numbering, Answer Format, Eliminate Guesswork, Organize Assumptions, Conversational Review, Complex Answers, Context Refresher, Problem Solving Approach, File Structure, @Rules, and Personas.
      2. Each of these items were followed by a few sentences explaining something about how the LLM should be expecting to receive information and react.  My favorite of these was the rule “@Rules” which directed the LLM to begin it’s response by reviewing the Rules and following them.
    5. Knowledge.  There are a number of programming languages and technical topics I’m interested in and have used an LLM to address.  To this point, I solicited a list of useful resources from the LLM and started including a “Knowledge” section where I listed dozens of the most important resources for the languages and API’s I most commonly use.
    6. By beginning each prompt with the above “framework” (~10k of text) and following it up with a short description of my project or a file to consider, I found I was able to jump right into the project without having to provide additional significant background information.
  4. Task 3:  “Project Drift”
    1. This is a considerably more complicated task I will simply refer to as “Project Drift.”  This isn’t a real codename since the developer base is all of exactly one dude, but I don’t want to name the location/website for a variety of reasons.  In any case, Project Drift involves multiple user interfaces, numerous settings, database queries, data sanitation and validation procedures, administrator functions, and numerous other facets.  All of the above tasks and attempts were basically part of the run-up to this (ongoing) project.
    2. Using the LLM’s ability to open and read a ZIP file, as well as propose code, has been invaluable.  This in conjunction with my prompt framework allows me to get the LLM up to speed after a micro-restart – and it’s summarization procedures help me get back in the mindset after I’ve stepped away from the project for a few days.
    3. Since this project isn’t done yet, I can only give a progress report.  It’s going very well.  Much of the heavy lifting, scaffolding of the code, can be assembled for me, tedious database queries and chunks of code provided.  There are still large areas where the LLM is unable to be very helpful – and that relates to pinpointing a bug in the code (or between code sections).  This still requires a knowledgeable hand at the helm.
    4. As a solo-coder, having the assistance of another “persona” to keep me on track with a given section of code has been helpful.  I have only assigned three personas, but I could see adding a few more to fulfill different roles.

I would estimate Project Drift is roughly 30-50% complete, but this is still an incredible amount of progress in a very short time.  I would also estimate it has cut the amount of my development time by 90% (but on the easiest and most tedious stuff).

Software Development with LLMs
  1. Series Plugin Test for Illustrative Purposes Only
  2. ChatGPT WordPress Plugins
  3. Coding with an LLM Sidekick
  4. Python Practice with an LLM
  5. Not Team AI
  6. Never Stop Breaking Up
  7. Weakness
  1. I know, it feels pretentious, doesn’t it? []
  2. I’ve got the same knee-jerk reaction to “visionary,” “thought leader,” “polymath,” and “futurist.” []
  3. Don’t get me wrong, some of the developers I’d hired simply disappeared while other relationships didn’t work out due to timing.  I don’t think anyone was malicious, just… busy, really. []
  4. Still, the job needs to be done. []
  5. Re-building? []

ChatGPT WordPress Plugins

This is kinda bananas.  Years ago I wrote a plugin to solve a problem I had.  I wanted a simple WordPress plugin where I could insert a shortcode into a blog post, specify a series title, and have it automatically search up all the other blog posts that used the same shortcode and series title, and then insert a nice looking list of blog posts in that series in chronological order.

It was one of my first plugins, still available on WordPress.org – just hidden since it hasn’t been updated in almost a decade.  It still works to this very day, if occasionally a little buggy.  After several WordPress versions, it no longer properly displays the series title, which is a real shame.

On a whim, I tried using ChatGPT to generate some plugins.

Here’s an example of my old plugin and the new ChatGPT written plugin (in this order):

Default Series Title

See how bad that was? It completely mangled the title.

Edit:  Since publishing this post, I realized that I would have to choose between

  1. Leaving the old defunct plugin in place just to make a point about how it didn’t stand the test of a decade’s worth of WordPress updates, but then also leaving broken series titles sprinkled through my back catalog of blog posts.
  2. Go back through nearly 10 years of blog posts12 to change them over to the new plugin shortcode.
  3. Disable the old plugin, but have the new plugin work with the old shortcode as well as it’s own new shortcode, at the cost of losing an example of how bad the old plugin performed.

I went with option 3.  Just take my word for it, it looked bad.

He makes a valid point
He makes a valid point

Now for the ChatGPT version:

Software Development with ChatGPT
  1. ChatGPT WordPress Plugins

It took me about an hour to whip up a working WordPress plugin with the same core functionality.  I would break down the time I spent as follows:

Time Spent Creating Series Plugin with ChatGPT

But, that’s not all!  You see, as I was writing this blog post, I realized it would be fun to include a pie chart to indicate the time I’d spent on this.  Unfortunately, the plugin I had written to do exactly this many years ago has apparently completely given up the ghost.  Thus, before I proceeded to this very sentence, I used ChatGPT to create a plugin for displaying custom pie charts!

Time Spent Creating Pie Chart Plugin with ChatGPT

Obviously, this plugin took a lot longer.  The first few versions were having all kinds of problems between the HTML Canvas code and trying to figure out how to make sure the javascript was not loading too early or too late.  In the end, I just asked it whether it was capable of even creating a pie chart – and it gave me a piece of workable javascript.  I told it to refactor the plugin using this same javascript, and then it was a matter of fine tuning the result.

If you don’t know anything about writing WordPress plugins, you could probably use ChatGPT to create a very simple plugin.  However, once it got slightly more complicated, it would likely require some troubleshooting to figure out what was happening.  In the series plugin it took me a while to root through the WordPress functions to figure out that apparently ChatGPT was trying to use a function in a way that simply did not work.  I explained to ChatGPT that that particular function could not operate in that way, explained how the data it was feeding into that function needed to be first modified, and then asked it to refactor the code.  From that point forward, it started to look a lot better.  There were some additional quirks – like putting more than one series title in a single post would only display one.  I suspect these problems of ChatGPT taking a shortcut to generate code, hardcoding certain variables and names, not considering that it might need to operate more than once on the page, may be difficult for it to anticipate and address.  Without some degree of WordPress development knowledge, I think a novice user armed only with ChatGPT would need to do a lot of refactoring, asking the program to generate the plugin all over from scratch many times, before arriving at a workable result.  Then again, a million monkeys at typewriters, right?

I think ChatGPT could be great for creating relatively simple plugins like a series plugin, a pie chart plugin, or even a table of contents plugin.  However, having seen how much time it cut out of the development process, I think it would be interesting to try developing an A/B testing plugin or more complicated plugin.

I think the next task to see if I can get it to generate QMK code for a keyboard, Arduino code, Raspberry Pi code, or a chrome extension.

I can already see some ways to improve both of the ChatGPT generated plugins used in this blog post.  My series plugin included two arrows at the bottom so the reader could navigate to the prior or next post in the series.  And I think it would be great if the chart plugin had a feature where I could specify the units, so the magnitude data would be included with the labels.  I may try getting it to shoehorn these updates later…

If you see these reflected in the charts above, I must have already done it.  :)

Software Development with LLMs
  1. Series Plugin Test for Illustrative Purposes Only
  2. ChatGPT WordPress Plugins
  3. Coding with an LLM Sidekick
  4. Python Practice with an LLM
  5. Not Team AI
  6. Never Stop Breaking Up
  7. Weakness
  1. NGL, I can really be a lot some times. []
  2. Um, you’ve probably gathered that. []

Series Plugin Test for Illustrative Purposes Only

The only purpose for this post is to serve as a reference for a more interesting and useful post.

Software Development with LLMs
  1. Series Plugin Test for Illustrative Purposes Only
  2. ChatGPT WordPress Plugins
  3. Coding with an LLM Sidekick
  4. Python Practice with an LLM
  5. Not Team AI
  6. Never Stop Breaking Up
  7. Weakness
Software Development with LLMs
  1. Series Plugin Test for Illustrative Purposes Only
  2. ChatGPT WordPress Plugins
  3. Coding with an LLM Sidekick
  4. Python Practice with an LLM
  5. Not Team AI
  6. Never Stop Breaking Up
  7. Weakness

[custom_pdf_generator visitor_data=“John Doe”]