All I wanted was to make a budget, and now I have all these feelings
Honestly, I'm pretty sick of the discourse around AI. It's intensely polarised, both sides lack a lot of nuance, and the arguments are just rehashed over and over again. There doesn't seem to be a lot of room for sitting on the fence, and yet that's where I have found myself. My LLM usage has spiked massively in the past few weeks, and I feel very conflicted about it. I'm hoping that by writing my thoughts down in this post I can help myself to crystallise my stance a little bit more, and dig into some feelings that I have experienced about my use of AI, and perhaps AI in general. Fair warning at the outset: this is a long post.
1. An Abundance of Context
On this website I maintain an AI statement. It may or may not be worth having a read of that, because I think I have failed in my attempts to follow some of the rules I set for myself. I still do not run any of the creative output of this site through an LLM, and nor do my other creative pursuits see contact with an AI agent or chat bot. That said, I have built up substantial use of LLMs before 12pm; not stayed up to date on the Discourse1; and potentially, depending on how you define creative work, reneged on my promise for all creative output to be my own.
What is still true is that my use of AI at work remains high. For a long time I was using Kagi Assistant, a chat bot run by my search provider which "combines the top large language models (LLMs) with optional results from Kagi Search." It's been pretty handy, and I've had it set up to specifically assist me with my work as a Linux support engineer with DevOps elements to the role2. Being able to set a tireless robot to look through an epic log file to find the few esoteric lines that explain a problem is like a superpower. I don't think it's exaggeration to say that it has helped me to be better at my job. More recently, the company paid for me to have a subscription to Claude Code. Getting to experience the frankly astonishing capability of an AI agent3 on my own machine has been overwhelming to say the least.
My personal usage of AI has slowly been ticking up as well: I find myself using Kagi Assistant in place of web search more and more. There are a couple of main reasons for this:
- A broad degradation in the quality of web search results. So many of the top results in many searches are AI-written, SEO-maximising slop. It's harder and harder to find genuine sources of subjective information.
- A desire to compare multiple things in a category through a very specific set of criteria. To cite a recent example; I wanted to find some spooky season movies that I can watch with my three daughters (ages 9-15) and wife, taking into account some specific likes and dislikes4.
- I have used an LLM a handful of times on a couple of bits of tedium in some of my personal code repositories, such as getting automated tests up and running.
I like to think of myself as a creative person with a bunch of different interests and hobbies that involve creativity. I play, write, and record music. I run TTRPGs. I like to write short stories and poetry. I also love to read, and play the occasional video game. I have long had an interest in coding, and have dabbled at length over the years with writing code as a hobbyist. I also tend to be very monotropic and have enormous difficulty focusing on more than one of these at any one time. Until I became a full-time parent a couple of years ago, I had more or less limitless time to engage in whatever took my fancy. Very frequently after work I would find myself working away on some project late into the evening and forgetting to eat at all. I cannot do that even a quarter as much as once I did, the demands of parenting and marriage being what they are. It means that bucket list projects I have in my head are either paused, or on a much slower pace than once before. That is the natural trade-off with family life, and I don't regret it for a moment. But it does leave me vulnerable to the idea of shortcuts.
1.1 A word on terminology
I vehemently dislike the feeling of finding out that something that somebody claims to have created is predominantly AI-generated. So in order to hold myself to that standard I have throughout this post done my best to not use the active voice when I talk about the tool I had vide-coded for me. The reason for this is that I think it's important to distinguish between labour that I have done, and labour that the AI did on my behalf.
2. My Kingdom for a Budgeting App!
Last week I got it into my head that I wanted to switch from using a spreadsheet for tracking our household's monthly budget to something with a bit more oomph. The spreadsheet we use is very simple, apart from a few not very intelligent formulae. Crucially, however, the spreadsheet works in alignment with how our brains do, and hasn't forced us to change our thinking to align with it. We use an extensive array of different pots in Monzo to allocate money with a specific job to its own location. Food shops get one pot, diesel gets another, subscriptions another, and so on. It doesn't feel very revolutionary, but it really works for the way that B— and I think.
In my search for an app that would add a bit more power and dimension to the way we manage our budget, it transpires that most apps and services do not play nicely with this approach. Everything has its own small set of foibles and expectations. As a long-time user of various kinds of software, I'm well used to the experience of having to adjust to the paradigm the creators assume for how you should work (layers in Photoshop are a great example of this). I'm still content to adapt to a new paradigm when I need to, but for our money I find that hard to countenance. Not least because I'd have to require my wife to rewire how she looks at our financial situation.
Still, I wanted to find something that might make the regular budgeting sessions a bit more informative. I turned to an LLM to try and find what might be available. I explained the current situation, what we measure, and the gaps I felt were present in the spreadsheet. I explained the features I was looking for in a budgeting app, and asked it to find me some options. But none of what came up worked perfectly, and there was always a fairly major compromise. Although I should say almost none of them worked perfectly. You see, the LLM would always finish its list with "the real solution is to just fix up and improve your spreadsheet." Which is the truth of the matter, isn't it? If I just put in the time and though to make the spreadsheet have all the features I want from a budgeting app, then this wouldn't be needed at all, right? There were two reasons for why I kept bouncing off this idea:
- I simply didn't know how much effort it would or would not be to add the things to my budget that I wanted to add. It felt like the changes would require such a major overhaul of the sheet that starting over felt necessary, and if I was going to do that then I might as well switch to something brand new.
- Apple Numbers is pretty rubbish, and I wanted to switch away from it. But I don't want to use Excel or Google Sheets because I don't like their operating companies. So the solution came down to choosing between finding another spreadsheet app, or use a dedicated budgeting app.
In talking to a colleague about this quagmire, he told me that he uses spreadsheets, and that the apps all never quite do what he wants them to (sounds familiar). He also said that if I really wanted something that wasn't a spreadsheet, I could try vibe-coding an app together. I had never tried vibe-coding before, but with a Claude subscription available through work I now had the means to give it a go5. I have other coding projects on the go which are specifically learning opportunities, so I have not used any AIs to assist with their development. But this felt like an opportunity to learn how to use a new tool that everyone was raving about, and to get something that I needed wanted in the process. I decided to give it a try.
I want to reiterate at this point that the correct solution as confirmed by my human colleague, my AI chatbot, the overwhelming majority of /r/UKPersonalFinance and my decade of using a spreadsheet to manage my budget is simply just to use and improve the fucking spreadsheet.
3. Becoming the Manager in the Dream Factory
The conversation I had had with Kagi Assistant about trying to find a budgeting app formed the basis of my prompt to Claude. I asked the LLM to generate a vibe-coding instruction, which after some consideration and quizzing it proceeded to do. I handed that along to Claude, and it set to work.
I think the first working version of the service came back in under 10 minutes, and I could use it in the browser on my laptop. It was fairly basic, and make a lot of UI/UX decisions that I wouldn't have, but it certainly did the things I had asked for. I tested a little bit, and made some suggestions. Claude wrote some changes and updated the app in my browser. I tested a bit more, and ask for a new feature. Claude added it. I told it to overhaul the entire UI with some very specific directions. Remove some over-complications. Get rid of entire sections. And so on. It was an almost ridiculously fast process, where Claude generated code that did what I wanted before I'd had chance to review what it had done, or to write a more thoughtful feature request. Each time I asked for something, Claude delivered it.
And in all honesty, it was fun! It felt like magic, being able put some text into a chat window, and less than ten minutes later have what was in my head realised in front of me. Over the course of a single day I'd gone from having an idea to having a working web app. I was hooked, and fixated upon the project for most of a whole day. I ran out of tokens6 twice, and had to wait for the limits of my Claude subscription to reset, building up a list of instructions for the next run in the meantime.
The process was genuinely addicting, as was the sense of power I felt suffused by. It was like orchestrating a team of much more talented individuals, complete with the niggling doubt that I wasn't quite asking for the right things. I was struck by how easy this all felt, and how the only limits were my ability to conceive of things that I wanted, and the token limits of my subscription.
4. Okay, so What's Your Problem?
I have done a little testing with dummy data, but nothing extensive yet. And nor have I ported any genuine data across from my actual budget. And I may never. And the reason is that I have absolutely no clue where I would begin digging into this code base to actually try and troubleshoot issues. I don't know how it all fits together, and having looked over the front and back ends I can tell you I have only the most amateurish understanding of what is even going on. To some small degree that's fine. Many of the apps and services I use I wouldn't be able to troubleshoot problems for. But in those instances, I am not the accountable party. If something breaks, it's the community or the developer that fixes it. But in this scenario if there's a problem with the app that was written on my behalf, then I am fully reliant on the LLM (which I may not have access to forever!) to fix it. If I were to dive in myself, I would need to take several business days to be confident enough to figure out what the actual bug is. I don't even know of a way to verify that this thing isn't uploading its data to some cloud platform somewhere!
Getting Claude to build something like this felt like orchestrating a team of more talented individuals. I am a rudimentary, hobbyist coder, and I enjoy getting stuck in to solve some problem or script some repetitive job. But it is far beyond my present capabilities to build something like this, in even ten times the amount of time it took Claude to create. I am familiar enough with the Python, HTML, and CSS that make up this little app to have maybe cobbled something approximating it together myself. It would have been basic, and lacking in a lot of the things I wanted, not least of which is a halfway acceptable UI. But the TypeScript that makes up 61% of the repository? That's a mystery to me. I could have slowly learned to use it, I'm sure. I'm not incapable of picking new programming languages or frameworks. But it's a slow process to really get them, limited as I am in my time to sit and learn. The prospect of a shortcut around all of that was simply too enticing to pass up.
5. Waking in a Cold Cold Sweat
After a couple of days' reflection on this experience I think my overwhelming impression is a negative one. I do not feel especially good after my foray into vibe-coding. After leaving the dream factory unattended for a few days, here's how I think the feelings have shaken out.
5.1 Cheated
For a period of several months in 2017, I cudgelled my brains into creating a little flash-card web app to help me learn different guitar chord voicings. I paid for an online course in full stack web development, and built something using what I had learned before I had even finished the course. I have done the same over the years since, and I won't list all the little curios that I have cobbled together, but there have been loads. It's sufficient to know that I'm currently working on a personal project for my boot.dev course; an initiative tracker for Dungeons and Dragons written in Python with a TUI framework for writing the interface.
The unifying feature of that load of projects is that they were hard. I had to focus for long periods of time, and read documents again and again to try and understand how to make the thing I wanted to happen happen. I failed constantly, but managed to slowly grind my way toward what I had in my head. And that was an amazing feeling. Just like the feeling of slaying the dragon, or of always taking the stairs, there was a deep tiredness after I had finished. But I also felt enormous pride in myself for managing to break through the barriers and create something that hadn't existed before. The cost was high in time and and energy, but the reward was a deep and fulfilling sense of satisfaction.
When I used Claude to generate this budgeting app, I felt none of that. I didn't feel proud or even tired. I felt like I should keep going, keep making improvements. Keep having ideas and getting Claude to build them. I didn't have any satisfaction in the thing that I was looking at, because the only hand I'd had in its construction were the equivalent of a few paragraphs of hastily-typed text. I was strangely disconnected from the thing that had been conjured into existence, and yet felt strangely compelled to keep working on it telling Claude to continue improving it. In short I feel like I have cheated myself out of that sense that I can actually achieve things when I set my mind to the task. In its place is an uncomfortable sense of inadequacy and obsolescence.
5.2 Ashamed
My wife B— is very strongly anti-AI. I won't get into her reasoning, as that's not the point of this. She knows I was looking for something to replace the spreadsheet with, and she broadly left me to it. Her one stipulation was that anything I found shouldn't change the way the money looks in our bank account, because that really works for her. Right now I feel nervous to show her this thing that I have vibe-coded7, in a bid to make the parts of our lives we spend budgeting easier. There's a strange feeling of betrayal to have used this technology she actively dislikes, even in a bid to help us both out. She knows I use LLMs for work, and doesn't like it, even if she understands my reasons for doing so. The very fact that it occurred to me that the only way I'd be able to get B— to buy into switching to the app Claude made would be to lie through my teeth tells me all I need to know.
While I was writing part of this post B— wanted to know what I was doing, and I talked about the subject matter at hand. Upon hearing I had vibe-coded something together, her first response was "I will not use it." Colour me utterly unsurprised. We ended up having a good conversation about AI in general though, which has helped me to crystallise my thoughts toward the end of the post. And she does have a niggling curiosity to at least see this thing that Claude made.
At the outset of this project I never planned to make this app publicly available. There were brief moments where I wondered if Claude might actually come up with something halfway usable that I could make available to the public, and possibly even use to generate a small bit of income. However the online communities I frequent tend to be pretty split about AI-generated applications. The pro-AI individuals tend to be quieter, and the anti-AI crowd shout a lot louder. But the Internet definitely does seem to be undergoing some kind of AI-related schism at the moment. The attitude in the self-hosting communities I participate leans more hostile toward vibe-coded apps that users submit, and that's not really something I want to expose myself to. I felt a lot of pre-emptive guilt about that, and for parts of the vibe-coding I even took great pains to instruct Claude to re-write the interface to replace all the obvious hallmarks of AI-generation. I hadn't even shown this thing to anyone, and wasn't seriously entertaining the prospect of posting it anywhere. Yet I felt great shame at the way it was so clearly AI-created.
Then there's the fact that the AI statement on this very website states some very specific boundaries I set for myself as regards AI, and I have blown through an awful lot of them. I am not beholden to past versions of myself, and I act today with information they didn't have yesterday. But it's deeply embarrassing to have read that back and realise just how much and how quickly I have reneged on those commitments.
5.3 Overwhelmed and Vulnerable
I went from having an idea in my head to something that does what I need in under a day. I am thoroughly struck by how easy that whole process was. I expect even that initial first step of constructing a good prompt wouldn't even actually be required7, and I could give Claude a single paragraph (or even a sentence) and have it come back with something at least partway serviceable. The only thing I really had to do was to take a directorial role, and open the relevant threads then I couldn't keep up with the speed at which the AI went through and built this app.
From a technological perspective, that is insanely cool. It’s hard not to feel awed by the sheer computational power that is being put into our hands. This thing looks and feels like it’s thinking8. But my job is thinking, and acting based on the application of my knowledge and my thoughts. I suddenly feel very replaceable. There’s a machine out there that for considerably less money than they pay me could take a pretty decent stab at about 80% of my job. It sure is easy to see how tempting it is to replace junior developers, support staff, and data entryists with a cheaper, tireless intelligence that can give you exactly what you want9.
I feel a very deep sense of insecurity about this. AI is better than I am. It can put a functional app together better and more quickly than I can. It can read whole manuals and generate the exact right set of commands needed to diagnose a problem on a server. It can parse painfully large log files at three o'clock in the morning when I'm bleary eyed from having been woken up, without overlooking the things I would. I don't know how long it would realistically have taken me to build something like this budgeting app without an LLM. Months? Years? It's hardly complex, but my time for sitting down and hyper-fixating on a coding project is heavily restricted. Would I even have the time to be able to learn enough of the technologies necessary to achieve this?
6. A Conclusion, or There and Back Again
Five years ago, before ChatGPT and its ilk were available, were I faced with the desire for a budget-tracking app to replace my spreadsheet I would have had more or less three options:
- Find an app or service that was closely enough aligned with what I wanted it to do, and adapt to its methodologies.
- Have someone else build the thing I wanted, at presumably quite substantial cost.
- Learn to write code of a good enough standard, in multiple languages and frameworks, to build the thing myself.
This week I was able to have an LLM build the exact tool that I wanted in less than a day. That we live an an era where it's even possible to have your exact, precise ideas made reality like this is the stuff of fiction. The product that I have ended up with is far from perfect, but as best I can tell it's quite serviceable. I can see how, for someone whose job is building complex tools, the addition of a highly competent development-capable AI could be a major boon. My LLM usage has spiked rather a lot in my job, but I don't necessarily mind that. It has reduced a lot of the cognitive overhead, meaning that I am less tired at the end of the day. This is honestly fantastic, and does genuinely feel like it's bringing us toward that dreamy future where work in its current form is no longer necessary.
For someone like me, using AI to craft bespoke applications completely removes a hobby from my (fairly limited) repertory. I enjoy the process of building software. Yes, when I do so I Google extensively to try and find out what I'm doing wrong, or the approach I need to take to get to a working feature, which some might argue is very close to the way that vibe-coding works. But it's still me doing the thinking, and the doing. I do it for the challenge. It's like a much larger, longer cryptic crossword. And I love the cryptic crossword. Even a budgeting app which I arguably won't enjoy using would have brought a lot of satisfaction from its creation.
I have mentioned that my initiative tracker is absent any LLM-generated code. However, I have been using an LLM to supplement my learning and to support me in figuring out solutions to problems. I have found what for now feels like a good balance: The AI takes the role of a knowledgeable teacher, and guides me toward a functional solution without just handing it to me. I still get to learn, but I have a personalised tutor that does not lose patience with me. Almost a true digital Aristotle10.
But, after I had spent a day giving instructions to an LLM and being bowled over by how quickly, efficiently, and easily it created the tool I wanted, I found myself completely immobilised and unenthused to work on initiative.py. The niggling temptation was right there in the back of my mind: you could just Claude to finish this off for you, you know. Thankfully, the AI statement I have put into the README.md of that project has stayed with me a little better than the claim I make for this website, and kept me more honest11.
We live in an on-demand era. Information, music, cinema, television, books, podcasts, food, shopping, medicine, and more, all available pretty much at will. And now we can have apps, services, and digital tools, catered perfectly to our needs, available at the stroke of a keyboard. All of this serves to cripple our ability to weather difficulty, tolerate frustration, and exercise patience. When I felt unable to continue with my initiative tracker after vibe-coding the budgeting app, I didn't understand why. But it was exactly that. The desire to avoid the difficulty of thinking for myself and maybe getting it wrong. A little devil on my shoulder asking why should I bother with learning to code if the LLMs can just do it for me instead.
It's scary that it's been only 4 years since ChatGPT was made available to the public, and we are already at what feels like a massive precipice. The evolution of LLM technology from a confidently incorrect stochastic parrot, into agentic software than can run and create tools on our behalf feels like something from the pages of science fiction. But to paraphrase a great line from one of my favourite sci-fi movies: "we were so preoccupied with whether or not we could, we didn't stop to think if we should."
The rate of change and progress seems unlikely to slow down, even with all the recent incidents hammering the tech and AI industries. I suppose at some stage I (and we all) have to choose how to react to it. Do I want to let the LLMs take over so much of my life that my abilities to think critically and weather frustration atrophy to nothing? Do I want to seed my creativity in code, music, and the written word over to an LLM? Because I fear that is where this leads. And, after writing almost 5000 words on the topic, I have ended up almost exactly where I started: suck it up and just fix the fucking spreadsheet.
💬 I don't have comments on my blog, but you can reply by email instead!
Footnotes
Keeping up has been an exercise in futility, because there is so much conversation about it. It feels like the conversation hasn't evolved for a long time, but perhaps that's just because I'm out of the loop. But each time I do dip my toe in it does seem like the conversation has not moved on from the established battle lines.↩
It's not essential for you to know what this means. Just understand that I work with servers in many forms, and manage them using code which my colleagues and I write and maintain.↩
There is a significant distinction between agents and chatbots. Agent AIs can take actions for you, from sorting your email and making calendar events, to logging into servers and performing administrative tasks. A chatbot is a simple conversation.↩
The more I think about this, the less excusable it feels to not just spend the time find all the possible options and comparing them myself.↩
As I write this it sounds like the beginnings of a drug addiction story. "I was having all these problems, and then my friend said 'try this, it'll make you feel like all your problems have vanished.'"↩
AI usage is measured in tokens, where a single token is roughly equivalent to a short word of about 6 characters.↩
Although certainly it would be advisable.↩
A whole separate post could be written on how I feel about the concept of free will and consciousness in the face of the AI revolution.↩
Occasionally to your detriment, to be sure.↩
It has been pointed out to me that by using AI in this way I am contributing to a situation whereby actual human teachers are being replaced. I have no justification, and I once again feel great shame.↩
I intend to update the AI statement on this site to limit its scope to this site.↩